简单介绍:
在我们前面介绍MyBatis的SQL映射文件的时候说到过有四种导入方式,当我们在使用导入接口的方式导入的时候可以将代码改成接口式开发
前期准备:
接口式开发需要遵守一些规范:
1.首先要确认你在MyBatis的核心配置文件中导入SQL映射文件的方式是以类的导入方式。
2.接口中方法的名称必须与SQL语句的唯一标识,也就是id的值保持一致,resultType就是接口中返回值的类型,parameterType就是接口中方法的参数的类型
3.mapper标签的namespace属性必须是接口的全路径,否则在运行的时候会无法找到接口对象的SQL映射文件
在确保这些规范全部都遵守之后,我们就可以把之前的代码全部都修改成为接口式开发规范了
代码实现:
首先在我们的java文件夹下面创建一个包和一个接口,注意包名和接口名必须和SQL映射文件保持一致:
接口中的代码如下:
package mappers;
import com.mybatis.POJO.User;
import java.util.List;
public interface select {
public User selectOne(int id);
public List<User> selectAll();
}
然后创建接口的测试类:
package mappers;
import com.mybatis.POJO.User;
import junit.framework.TestCase;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;
import java.io.InputStream;
public class selectTest {
// 创建动态代理类的对象
select mapper = null;
// 创建SqlSession的单例对象
SqlSession sqlSession = null;
@Before
public void setUp() throws Exception {
// 以流的形式封装MyBatis核心配置文件
InputStream stream = Resources.getResourceAsStream("mybatis.xml");
// 解析核心配置文件并生成SqlSessionFactory对象
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(stream);
// 生成持久化连接对象并操作数据库
sqlSession = build.openSession();
// 获取接口的动态代理对象
mapper = sqlSession.getMapper(select.class);
}
@Test
public void selectOne(){
User user = mapper.selectOne(1);
System.out.println(user.toString());
sqlSession.close();
}
@Test
public void selectAll(){
for (User user : mapper.selectAll()) {
System.out.println(user.toString());
}
sqlSession.close();
}
}
MyBatis核心配置文件主要修改引入SQL映射文件的方式即可:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 引入外部配置文件-->
<properties resource="db.properties"/>
<!-- 配置别名映射,将POJO实体类的全限定类名映射到类名-->
<typeAliases>
<typeAlias type="com.mybatis.POJO.User" alias="user"/>
</typeAliases>
<!-- 配置运行环境,这里只有一套运行环境-->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${mysql.driver}"/>
<property name="url" value="${mysql.url}"/>
<property name="username" value="${mysql.username}"/>
<property name="password" value="${mysql.password}"/>
</dataSource>
</environment>
</environments>
<!-- 以引入接口的方式引入SQL映射文件-->
<mappers>
<mapper class="mappers.select"/>
</mappers>
</configuration>
接下来就只需要在接口测试类中运行测试即可: