发表于: 2017-06-17 18:10:58
2 1149
这几天一直卡在任务17,因为任务17中内容太多(Spring, JDBC, JDBC Template, MyBatis),这些内容我觉得够学一个月的了。每一部分内容大概只了解了10%,但任务本身应该算是完成了,剩下不会的东西认为也很关键,需要自己慢慢补课。
今天完成的任务:任务17——22
上一次完成了JDBC Template 的 DAO的编写,今天完成了MyBatis的DAO的编写,因为比Jdbc要简单很多,就顺便把单元测试也做了,部分单元测试也是按照要求,先写测试,再写接口,再写.xml文档。
Tests:
public class MyBatisAppTest {
static SqlSessionFactory sessionFactory;
SqlSession session;
private UserMapper mapper;
private User testUser;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
String resource = "spring_jdbc_template_app/MyBatisAppConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
inputStream.close();
}
@Before
public void setUp() throws Exception {
session = sessionFactory.openSession();
mapper = session.getMapper(UserMapper.class);
testUser = new User();
testUser.setName("Test Person");
Long curTime = System.currentTimeMillis();
testUser.setCreateAt(curTime);
testUser.setUpdateAt(curTime);
}
@After
public void tearDown() throws Exception {
if (session != null)
session.close();
}
@Test
public void testSelectUserByID() {
User user = session.selectOne("selectUserByID", 1);
assertEquals(Long.valueOf(1), user.getId());
assertEquals(user.getName(), "童志荣");
//测试 mapper.xml 中的AS 是否有效
assertNotNull(user.getRegisterTime());
}
@Test
public void testSelectAllUsers(){
//List<User> userList = session.selectList("selectAllUsers");
//使用mapper interface进行操作
List<User> userList = mapper.selectAllUsers();
for(int i = 0; i < userList.size(); i++){
assertNotNull(userList.get(i).getName());
}
}
@Test
public void testInsertUser(){
int before = mapper.getSize();
mapper.insertUser(testUser);
session.commit();
int after = mapper.getSize();
assertEquals(before + 1, after);
}
@Test
public void testUpdateUser(){
User user = mapper.selectUserByID(1);
//这个测试在中文下失败了,英文可以通过,不知道是什么bug,在控制台中手动输入中文是可以的,可能是编码的错误??
user.setDeclaration("only english");
mapper.updateUser(user);
session.commit();
user = mapper.selectUserByID(1);
//System.out.print(user.getDeclaration());
assertEquals("only english", user.getDeclaration());
}
@Test
public void testDeleteUser(){
int before = mapper.getSize();
mapper.insertUser(testUser);
session.commit();
int last = mapper.getLastIndex();
mapper.deleteUserByID(last);
session.commit();
int after = mapper.getSize();
assertEquals(before,after);
}
}
——————————————————————————————————————————————————————————
Mapper Interface:
public interface UserMapper {
public User selectUserByID(int id);
public List<User> selectAllUsers();
public void insertUser(User user);
public int getSize();
public void updateUser(User user);
public int getLastIndex();
public void deleteUserByID(int id);
}
————————————————————————————————————————————————————————————
Mapper XML:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="spring_jdbc_template_app.UserMapper">
<select id="selectAllUsers" resultType="User">
SELECT id, name, school,
qq, type, way, declaration, link, mentor,
register_time AS
registerTime, create_at AS createTime, update_at AS
updateTime
FROM
user_information
ORDER BY id
</select>
<select id="selectUserByID" resultType="User">
SELECT id, name, school,
qq, type, way, declaration, link, mentor,
register_time AS
registerTime, create_at AS createTime, update_at AS
updateTime
FROM
user_information
WHERE id=#{?}
</select>
<insert id="insertUser" parameterType="User">
INSERT INTO
user_information (name, create_at, update_at)
VALUES (#{name},
#{createAt}, #{updateAt})
</insert>
<select id="getSize" resultType="int">
SELECT COUNT(*) FROM
user_information
</select>
<update id="updateUser" parameterType="User">
UPDATE user_information
SET declaration = #{declaration}
WHERE id=#{id}
</update>
<select id="getLastIndex" resultType="int">
SELECT MAX(id) FROM
user_information
</select>
<delete id="deleteUserByID">
DELETE FROM
user_information WHERE id=#{?}
</delete>
</mapper>
——————————————————————————————————————————————————————
config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<typeAlias type="spring_jdbc_template_domain.User"
alias="User" />
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="UNPOOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/user_info?useSSL=false" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="spring_jdbc_template_app/UserMapper.xml"/>
</mappers>
</configuration>
————————————————————————————————————————————————————————-
——————————————————————————————————————————————————————————-
明天:任务23.
问题:
1. 对下一个任务(将部署自己服务到服务器上,包括Maven,Mysql客户端等。直接用Maven命令跑单元测试。)不太清楚大概要干什么,只买了一个最便宜的阿里云服务器,数据库是弄好了,但是不知道怎么把程序也放上去,是要打包成什么文件?怎么能直接用Maven命令控制服务器的单元测试?
2. 最近时间比较充裕,对于我现在这种程度,师兄是否建议去线下学习?
总结:对Spring的使用还是不熟练,今天的任务中完全没用到Spring,感觉有些不对劲。
评论