mybatis的mapper代理方法开发实现用户的增删改查

来源:互联网 发布:打车软件司机版 编辑:程序博客网 时间:2024/06/08 03:29

思路

程序员只需要写mapper接口(相当于dao接口)

mapper代理开发规范

1.程序员还需要编写mapper.xml映射文件
2.程序员编写mapper接口需要遵循一些开发规范,mybatis可以自动生成mapper接口实现类代理对象。


开发规范:
1、在mapper.xml中namespace等于mapper接口地址

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!-- namespace命名空间,作用就是对sql进行分类化管理,理解sql隔离 注意:使用mapper代理方法开发,namespace有特殊重要的作用,namespace等于mapper接口地址--><mapper namespace="cn.itcast.mybatis.mapper.UserMapper"></mapper>

2、mapper.java接口中的方法名和mapper.xml中statement的id一致

3、mapper.java接口中的方法输入参数类型和mapper.xml中statement的parameterType指定的类型一致。

4、mapper.java接口中的方法返回值类型和mapper.xml中statement的resultType指定的类型一致。

例如:

<!-- 在 映射文件中配置很多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="cn.itcast.mybatis.po.User">        SELECT * FROM USER WHERE id=#{value}    </select>

对应的mapper接口中的定义:

//根据id查询用户信息    public User findUserById(int id) throws Exception;

总结:
以上开发规范主要是对下边类型的代码进行统一生成,也就是对原始dao开发的简化,去掉了一些模板代码等。

User user = sqlSession.selectOne(“test.findUserById”, id);
sqlSession.insert(“test.insertUser”, user);

…………


具体代码实现

UserMapper.java

public interface UserMapper {    //根据id查询用户信息    public User findUserById(int id) throws Exception;}

UserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!-- namespace命名空间,作用就是对sql进行分类化管理,理解sql隔离 注意:使用mapper代理方法开发,namespace有特殊重要的作用,namespace等于mapper接口地址--><mapper namespace="cn.itcast.mybatis.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="cn.itcast.mybatis.po.User">        SELECT * FROM USER WHERE id=#{value}    </select>    </mapper>

在SqlMapConfig.xml中加载mapper.xml

<mappers>        <!--通过resource方法一次加载一个映射文件 -->         <mapper resource="mapper/UserMapper.xml"/> </mappers>

测试

@Test    public void testFindUserById() throws Exception {        SqlSession sqlSession = sqlSessionFactory.openSession();        //创建UserMapper对象,mybatis自动生成mapper代理对象        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);        //调用userMapper的方法        User user = userMapper.findUserById(1);        System.out.println(user);    }
0 0
原创粉丝点击