前面已经配置好了mybatis的开发环境,并且实现了一个简单的查询。这种方式是使用SqlSession实例来直接执行已映射的SQL语句,这种方法需要写很长一段字符串,容易出错、传入数据参数类型也可能会出错、执行结果还需要强制类型转换。
如果采用接口式编程,就可以明确被调用的方法,因为我们调用的是接口中的某个具体方法,而不再是通过一个字符串来指定执行映射文件中的某个SQL语句。传入参数和返回值都不再是Object,这样就可以在代码编写阶段确保传入的参数类型是正确的,也不再需要对返回值进行强类型转换。
优化步骤
1.在source目录下创建名为com.zhq.dao的接口包,并在该包下创建一个名为ActivityDao的接口。代码如下:
package com.zhq.dao;
import java.util.List;
import com.zhq.pojo.Activity;
public interface ActivityDao {
List<Activity> selectByAll();
Activity selectById(int id);
}
2.修改测试类ActivityTest,使用SqlSession实例对象的getMapper方法。代码如下:
@Test
public void testSelectById() {
SqlSession session = sqlSessionFactory.openSession();
//使用SqlSession实例对象的selectOne方法
//Activity activity = session.selectOne("com.zhq.dao.ActivityDao.selectById",10);
ActivityDao activityDao = session.getMapper(ActivityDao.class);
Activity activity = activityDao.selectById(10);
session.commit();
Assert.assertNotEquals("查找成功", "爱美丽", activity.getTitle());
session.close();
}
3.运行测试文件就可以看到结果