阅读目录- 一、Mybatis进行原始的Dao开发
- 二、Mapper动态代理方式
一、Mybatis进行原始的Dao开发
原始Dao开发需要编写Dao接口和Dao实现类,步骤如下:
1、Dao接口
public interface UserDao{public User findUserById(int id);}
2、Dao实现类
public class UserDaoImpl implements UserDao{SqlSessionFactory sqlSessionFactory;public UserDaoImpl(SqlSessionFactory sqlSessionFactory){this.sqlSessionFactory=sqlSessionFactory;}@Overridepublic User findUserById(int id){SqlSession sqlSession=sqlSessionFactory.openSession();User user=sqlSession.selectOne("test.findUserById", id);sqlSession.close();return user;}}
3、映射文件
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="test"><select id="findUserById" parameterType="int" resultType="com.test.pojo.User">select * from user where id=#{id}</select></mapper>
4、加载映射文件
<mappers><mapper resource="User.xml"/></mappers> 原始的Dao开发存在两个问题: 1、Dao方法体存在重复代码:通过SqlSessionFactory创建SqlSession。 2、调用sqlSession的数据库操作方法需要指定statement的id,这里存在硬编码,不得于开发维护。
二、Mapper动态代理方式
1、实现原理
该种方式只需要编写Mapper接口(相当于Dao接口),由Mybatis框架根据接口定义创建接口的动态代理对象,代理对象的方法体同上面的Dao接口实现类方法。 Mapper接口开发需要遵循的规范:1、 Mapper.xml文件中的namespace与mapper接口的类路径相同。2、 Mapper接口方法名和Mapper.xml中定义的每个statement的id相同。3、 Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的类型相同。4、 Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同。
2、实现步骤
1、Mapper接口 注意:Mapper接口需要满足上述2、3、4三个条件,内容如下: 2、Mapper.xml映射文件 新建UserMapper.xml文件,内容同User.xml,但是要修改namespace为mapper接口的类路径。
3、加载UserMapper.xml文件
<mappers><mapper resource="UserMapper.xml"/> </mappers>
4、测试代码
public class UserMapperTest{private SqlSessionFactory sqlSessionFactory;@Beforepublic void setUp() throws IOException{String resource="SqlMapConfig.xml";InputStream inputStream=Resources.getResourceAsStream(resource);sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);}@Testpublic void testFindUserById(){SqlSession sqlSession=sqlSessionFactory.openSession();UserMapper userMapper=sqlSession.getMapper(UserMapper.class);User user=userMapper.findUserById(5);System.out.println(user);sqlSession.close();}}MyBatis入门学习教程 http://www.linuxidc.com/Linux/2015-02/113771.htmJava实战应用:Mybatis实现单表的增删改 http://www.linuxidc.com/Linux/2014-06/103456.htm[Java][Mybatis]物理分页实现 http://www.linuxidc.com/Linux/2014-04/99889.htmMybatis快速入门教程 http://www.linuxidc.com/Linux/2013-06/85762.htmMybatis的关于批量数据操作的测试 http://www.linuxidc.com/Linux/2012-05/60863.htmMybatis中对List<Object> 对象List的批处理插入操作 http://www.linuxidc.com/Linux/2014-02/96916.htm
MyBatis 的详细介绍:请点这里
MyBatis 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-07/133638.htm