MyBatis课后扩展小结

上一讲,我们在UserMapper.xml里定义了两个查询语句:findById和findAll,对应的在UserMapper接口里定义了两个抽象方法:findById(int id)和findAll()。
一、补充内容,不使用MyBatis配置文件获取SQL会话对象
(一)查看官网上的资料
在这里插入图片描述
通篇都是英文,用有道词典翻译了一下。
在这里插入图片描述

(二)新建一个为UserDataSourceFactory的对象。在这里插入图片描述
(三)编写代码

public class TestUserMapperNew {
    
    
    private SqlSession sqlSession;//SQL会话
    private UserMapper userMapper;//用户映射器

    @Before
    public void init() {
    
    
        //获取数据源
        DataSource dataSource = new PooledDataSource("com.mysql.jdbc.Driver",
                "jdbc:mysql://localhost:3306/testdb?useSSL=false","root","123456");
        //创建事务工厂
        TransactionFactory transactionFactory = new JdbcTransactionFactory();
        //创建数据库环境
        Environment environment = new Environment("development",transactionFactory,dataSource);
        //基于环境创建配置对象
        Configuration configuration = new Configuration(environment);
        //添加用户映射器配置接口
        configuration.addMapper(UserMapper.class);
        // 基于MyBatis配置对象构建SQL会话工厂
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(configuration);
        // 利用SQL会话工厂获取SQL会话
        sqlSession = factory.openSession();
        //利用SQL会话获取用户映射器对象
        userMapper = sqlSession.getMapper(UserMapper.class);
        // 提示用户SQL会话创建成功
        System.out.println("sqlSession对象已创建。");
    }

    @Test
    public void testFindById() {
    
    
        int id = 1;
        User user = userMapper.findById(id);
        if (user != null) {
    
    
            System.out.println(user);
        } else {
    
    
            System.out.println("编号为[" + id + "]的用户未找到。");
        }
    }

    @Test
    public void testFindAll() {
    
    
        List<User> users = userMapper.findAll();
        users.forEach(user -> System.out.println(user));
        System.out.println();
        for(int i = 0; i< users.size();i++){
    
    
            System.out.println(users.get(i));
        }
        System.out.println();
        for (User user:users){
    
    
            System.out.println(users);
        }
    }

    @After
    public void destroy() {
    
    
        // 关闭SQL会话
        sqlSession.close();
        // 提示用户SQL会话对象关闭
        System.out.println("sqlSession对象已关闭。");
    }
}

(四)运行测试运行测试类TestUserMapperNew里的TestFindById方法
在这里插入图片描述

修改用户映射器接口
在这里插入图片描述
(五)运行测试运行测试类TestUserMapperNew里的TestFindById方法
在这里插入图片描述
(六)运行测试TestFindAll方法
在这里插入图片描述
在返回去运行TestUserMapper时,程序就会报错。
运行测试TestFindById方法
在这里插入图片描述
将UserMapper接口里抽象方法上添加的注解去掉,再执行测试方法就不会报错了。
在这里插入图片描述
运行测试TestFindById方法
在这里插入图片描述
课后小结:
在补充内容中,不使用MyBatis配置文件获取SQL会话对象里,在创建数据库环境的时候遇到了问题,添加用户映射器配置接口也不会使用,不知道如何下手。在老师给出的资料中也没看明白,通篇都是英文,在借助有道词典的帮助下大概了解一点,对于基于MyBatis配置对象构建SQL会话工厂这个知识点完全处于懵中,在通过老师讲过后,才能勉强会。通过课上学习的情况来看,在接下来的学习过程中还得更下工夫。

猜你喜欢

转载自blog.csdn.net/triet/article/details/114517832
今日推荐