Mybatis通过接口的代理方式实现Dao层
使用这种方式只需要我们编写Mapper接口,由mybatis框架来进行创建对应的实现类【原理是使用动态代理】
接口代理方式的开发规范:
- Mapper.Xml文件中的namespace(映射文件中额命名空间)和Mapper接口的全限定名相同。
- Mapper接口中的方法名和Mapper。Xml中定义的每个statement(sql操作的标签)的id相同。
- Mapper接口中的方法的输入参数类型要和映射文件中定义的每个sql的parameterType的类型相同。
- Mapper接口中的方法的返回值要和映射文件中定义的每个sql的resultType的类型相同相同。
图形规范:
代码实现:
Dao层接口:
mapper代码的实现:
public interface UserDao {
void save();
}
映射文件:
测试代码:
@Test
public void sh() throws IOException {
//加载核心配置文件 其中参数的地址是相对于 类加载路径下的地址 返回值是一个流
InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
//获得sqlsession工厂对象
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
//获得sqlsession的会话对象
SqlSession sqlSession = build.openSession();
//执行数据库的操作
UserDao1 mapper = sqlSession.getMapper(UserDao1.class);
List<User> save = mapper.save();
System.out.println(save);
//关闭session会话对象
sqlSession.close();
使用接口代理的方式需要使用sqlsession会话对象创建mapper对象,sqlSession.getMapper(UserDao1.class);参数是mapper接口的类对象。 List<User> save = mapper.save();返回值类型自动识别。
mapper接口中的方法含有参数:
dao层接口:
映射文件: