代理开发方式介绍:
采用Mybatis的代理开发方式实现DAO层的开发,这种方式是我们后面进入企业的主流。
代理开发方法只需要程序员编写Mapper接口(相当于Dao接口),由Mybatis 框架根据接口定义创建接口的动态代理对象。
简而言之,将UserMapper.xml配置文件实体化为Dao类。
需遵循以下规范:
1、 Mapper.xml文件中的namespace与mapper接口的全限定名相同;
2、 Mapper接口方法名和Mapper.xml中定义的每个statement的id相同;
3、 Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql的parameterType的类型相同;
4、 Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同。
即Dao对象的类名、方法名、方法参数类型与xml文件中对应参数保持一致。
代码
Dao接口:
public interface UserDao {
public User findById(int id) ;
public List<User> findAll() ;
}
UserMapper.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="II_代理开发.Dao.UserDao">
<!-- 编写映射文件 -->
<!--根据id进行查询-->
<select id="findById" resultType="user" parameterType="int">
select * from user where id=#{id}
</select>
<!--查询操作-->
<select id="findAll" resultType="U.User">
select * from user
</select>
</mapper>
测试:
public class test {
//模拟service应用层
public static void main(String[] args) throws IOException {
InputStream resourceAsStream = Resources.getResourceAsStream("II/SqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
List<User> all = mapper.findAll();
System.out.println(all);
User user = mapper.findById(1);
System.out.println(user);
}
}