【Mybatis从0到1-006】mybatis开发DAO之基于mapper代理
来源:互联网 发布:mac如何解压rar文件 编辑:程序博客网 时间:2024/05/16 18:48
在上一章中,介绍了mybatis开发dao的原始方法,并总结了,原始开发方式的问题,本章,将介绍基于mapper代理的方式开发dao。
与传统开发方式相比,mapper代理开发,程序员需要书写mapper接口(相当于dao接口),除此外,程序员还需要编写mapper.xml映射文件,编写mapper接口需要遵循一些开发规范,mybatis可以自动生成mapper接口实现类代理对象。
开发规范:
1、在mapper.xml中namespace等于mapper接口地址;
2、mapper.java接口中的方法名和mapper.xml中statement的id一致
3、mapper.java接口中的方法输入参数类型和mapper.xml中statement的parameterType指定的类型一致。
4、mapper.java接口中的方法返回值类型和mapper.xml中statement的resultType指定的类型一致。
下面开始具体的操作:
【1】创建mapper文件夹,路径为:src\main\java\mapper,在文件夹内创建接口文件,名字为:UserMapper,在文件中写入如下代码:(这里只拿一个来举例子:通过id查用户信息)
public interface UserMapper { //根据id查询用户基本信息 User findUserById(int id) throws Exception;}
【2】接口创建完毕后,创建xml文件,名字为UserMapper.xml,路径为:src\main\resources\mapper,代码copy文件User.xml(路径:src\main\resources\sqlmap\User.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"><!-- namespace命名空间,作用就是对sql进行分类化管理,理解sql隔离注意:使用mapper代理方法开发,namespace有特殊重要的作用,namespace等于mapper接口地址--><mapper namespace="mapper.UserMapper"> <!-- 在 映射文件中配置很多sql语句 --> <!-- 需求:通过id查询用户表的记录 --> <!-- 通过 select执行数据库查询 id:标识 映射文件中的sql,将sql语句封装到mappedStatement对象中,所以将id称为statement的id parameterType:指定输入参数的类型,这里指定int型【此时,与接口中输入参数类型一致】 #{}表示一个占位符号,#{id}:其中的id表示【接收输入】的参数,参数名称就是id,如果输入参数是简单类型,#{}中的参数名 可以任意,可以value或其它名称 resultType:指定sql输出结果 的所映射的java对象类型,select指定resultType表示将单条记录映射成的java对象。--> <select id ="findUserById" parameterType="int" resultType="po.User"> SELECT *FROM user WHERE id=#{id} </select></mapper>
在修改code过程中,有几处需要注意:
1.namespace按照开发规范,应为:namespace="mapper.UserMapper";
2.id按照开发规范,应与接口的方法名一致,应为:id ="findUserById";
3.parameterType按照开发规范,应与接口中的输入参数类型一致,应为:parameterType="int";
4.resultType按开发规范,应与接口中方法返回值类型一致,应为:resultType="po.User"。
【3】完成以上两个步骤,还有最重要一步至关重要,那就是要在SqlMapConfig.xml中加载UserMapper.xml文件,否则之前所做努力全都白费。打开SqlMapConfig.xml(路径为:src\main\resources\SqlMapConfig.xml),加入如下代码:将上次的映射文件暂时毙掉, <!--<mapper resource="sqlmap/User.xml"/>-->。
<!-- 加载 映射文件 --><mappers> <!--<mapper resource="sqlmap/User.xml"/>--> <mapper resource="mapper/UserMapper.xml"/></mappers>
【4】最后开始进行单元测试,生成测试文件的步骤,在【003】中已有详细介绍,这里只贴出代码:
public class UserMapperTest { private SqlSessionFactory sqlSessionFactory; //此方法在执行findUserById()之前执行 @Before public void setUp() throws Exception { //mybatis配置文件 String resource = "SqlMapConfig.xml"; //得到配置文件流 InputStream inputStream = Resources.getResourceAsStream(resource); //创建会话工厂 sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } @Test public void findUserById() throws Exception { // 通过工厂得到SqlSession SqlSession sqlSession = sqlSessionFactory.openSession(); //创建UserMapper对象,mybatis自动生成mapper代理对象 UserMapper userMapper = sqlSession.getMapper(UserMapper.class); //调用接口中的方法 User user = userMapper.findUserById(22); //关闭sqlsession sqlSession.close(); System.out.println(user); }}
【5】最后展示下,结果,由于测试代码中,我是以id=22进行查询的,所以结果显示id=22的用户信息。- 【Mybatis从0到1-006】mybatis开发DAO之基于mapper代理
- 【Mybatis从0到1-016】Spring与MyBatis整合mapper开发DAO(推荐使用)
- 【Mybatis从0到1-005】mybatis开发DAO之原始开发方法
- mybatis--开发Dao--原始dao方式和Mapper代理方式
- mybatis学习之原始开发DAO与mapper代理开发DAO的区别
- 【mybatis】--mapper代理实现dao
- Mybatis-Dao层开发之Mapper接口
- mybatis基于mapper代理的开发
- Mybatis之使用mapper代理方法开发dao(程序员只需要写mapper接口(dao接口))(12)
- mybatis 原始dao开发和mapper代理开发的比较
- Spring + Mybatis - 原始dao开发整合 与 Mapper代理整合
- MyBatis学习记录(3):Mapper动态代理方式开发DAO
- 【MyBatis学习04】mapper代理方法开发dao
- Mybatis中mapper代理方法替换原始Dao开发方法
- Mybatis开发dao的方法--Mapper代理篇
- 【MyBatis学习04】mapper代理方法开发dao
- 【MyBatis学习04】mapper代理方法开发dao
- 【MyBatis学习04】mapper代理方法开发dao
- HTML表格和框架
- HDOJ1532 最大流 BFS + EK 算法 模板
- linux下Webbench的安装及使用
- 试除法
- STL之Set和multiset容器
- 【Mybatis从0到1-006】mybatis开发DAO之基于mapper代理
- 如何将Markdown文章轻松地搬运到微信公众号并完美地呈现代码内容
- The Trip, 2007 UVA
- poj 3026 Borg Maze 【bfs+最小生成树】
- IO流文件的读取与写入
- Qt5.7 编译V-REP
- Codeforces Round #429 (Div. 2) 题解(ABCD)
- hdu 1757 A Simple Math Problem
- delphi: reference to(匿名方法)