上一讲,我们在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会话工厂这个知识点完全处于懵中,在通过老师讲过后,才能勉强会。通过课上学习的情况来看,在接下来的学习过程中还得更下工夫。