发表于: 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的项目,当然都是拷贝来的,再读和改,从头自己写还是写不下来,不过感觉可以自己弄个小模板了,新项目直接往里填新内容就行。


返回列表 返回列表
评论

    分享到