发表于: 2017-08-08 21:04:32
2 836
今天完成的事情:步骤17,18,20,21
1,把昨天出错的增和改搞好了,昨天和表的列名字不一样是我出错后改的表,没注意还改错了,不是那的问题。增的错在xml文件sql语句表名写错了;改的错在xml文件sql语句有一列少了个“=”还有一列名字写错了。
2,还是mybatis,按DAO模式写增删查改,边学变对着网上的代码修改成自己的,两种方法,原始dao开发方式:
白天都在搞这个,最终有一个错实在解决不掉,Mapped Statements collection does not contain value for User.(测试哪个方法点后就是那个方法名),百度了,对着自己的查,namespace写了,还试着改了下内容仍没搞定,User.xml中的方法和接口也都对的上,User.xml也添加到SqlMapperConfig.xml里了,名字也没错,网上就这几种解决方法,没辙了。
继续第二种方法,mapper动态代理开发方式,结合前面基础,晚上不长时间完成了这个,测试增删查改全部成功,照例先贴数据库表样式:
下面是程序:
测试代码较长,就不截图了:
public class UserMapperTest {
private SqlSessionFactory sqlSessionFactory = null; // 工厂对象一般在我们的系统中是单例的
@Before
public void setUp() throws Exception {
// 第一步,创建SqlSessionFactoryBuilder对象
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
// 第二步,加载配置文件
InputStream inputStream = Resources.getResourceAsStream("SqlMapperConfig.xml");
// 第三步,创建SqlSessionFactory对象
sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
}
@Test
public void testSelectUserById() {
// 和Spring整合后就省略了
SqlSession sqlSession = sqlSessionFactory.openSession();
// 获得代理对象(到时候就只需要通过Spring容器拿到UserMapper接口的代理对象就可以了)
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = userMapper.selectUserById(10);
System.out.println(user);
// 和Spring整合后就省略了
sqlSession.close();
}
@Test
public void testSelectUserByName() {
// 和Spring整合后就省略了
SqlSession sqlSession = sqlSessionFactory.openSession();
// 获得代理对象(到时候就只需要通过Spring容器拿到UserMapper接口的代理对象就可以了)
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
List<User> list = userMapper.selectUserByName("%姚%");
for (User user : list) {
System.out.println(user);
}
// 和Spring整合后就省略了
sqlSession.close();
}
@Test
public void testInsertUser() {
// 和Spring整合后就省略了
SqlSession sqlSession = sqlSessionFactory.openSession();
// 获得代理对象(到时候就只需要通过Spring容器拿到UserMapper接口的代理对象就可以了)
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = new User();
user.setName("燕小鱼");
user.setQq(11111);
user.settype("前端工程师");
user.settime(20170708);
user.setGraduate_School("北京天天蓝大学天天玩技术学院");
user.setstudent_number(0000);
user.setDaily_link("http:www.jnshu.com");
user.sethope("如果我不能在IT特训营拼尽全力,为自己以后的修行路上打好基础,就让我变胖2斤!");
user.setteacher("任我行");
user.setknow_from("知乎");
user.setcreate_at(20170808);
user.setupdate_at(20170808);
int index = userMapper.insertUser(user);
System.out.println(index);//获取受影响的行数
System.out.println(user.getId());//获取返回的自增主键
//提交事务
sqlSession.commit();
// 释放资源
sqlSession.close();
}
@Test
public void testDeleteUser() {
// 和Spring整合后就省略了
SqlSession sqlSession = sqlSessionFactory.openSession();
// 获得代理对象(到时候就只需要通过Spring容器拿到UserMapper接口的代理对象就可以了)
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
int index = userMapper.deleteUser(6);
System.out.println(index);//获取受影响的行数
//提交事务
sqlSession.commit();
// 释放资源
sqlSession.close();
}
@Test
public void testUpdateUser() {
// 和Spring整合后就省略了
SqlSession sqlSession = sqlSessionFactory.openSession();
// 获得代理对象(到时候就只需要通过Spring容器拿到UserMapper接口的代理对象就可以了)
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = new User();
user.setId(5);
user.setName("燕小鱼");
user.setQq(11111);
user.settype("前端工程师");
user.settime(20170708);
user.setGraduate_School("北京天天蓝大学天天玩技术学院");
user.setstudent_number(0000);
user.setDaily_link("http:www.jnshu.com");
user.sethope("如果我不能在IT特训营拼尽全力,为自己以后的修行路上打好基础,就让我变胖2斤!");
user.setteacher("任我行");
user.setknow_from("知乎");
user.setcreate_at(20170808);
user.setupdate_at(20170808);
int index = userMapper.updateUser(user);
System.out.println(index);
//提交事务
sqlSession.commit();
// 释放资源
sqlSession.close();
}
}
还有User.java就是添加13个参数,13对get,set,不贴了,日志文件固定内容也不贴了。
步骤21调试,这个测试程序给testSelectUserById方法全都标上断点调试F5就这样了
看不懂啊,以前学的时候调试个计算,循环小程序还是很明白的,不知道能不能过。
明天计划的事情:步骤19学习spring,再学学基础知识,还有今天在网上搞来的测试代码很多地方标着和spring整合后就可以省略,明天试试看能不能行,进展顺利的话就开始步骤22搞服务器。
遇到的问题:原始dao开发方式遇到的那个错放弃治疗了,调试这个测试程序看不懂。
收获:大概,,可以,,mybatis算是过了吧。这两天搞了7,8个mybatis的项目,当然都是拷贝来的,再读和改,从头自己写还是写不下来,不过感觉可以自己弄个小模板了,新项目直接往里填新内容就行。
评论