Mybatis之Mapper动态代理方式

来源:互联网 发布:淘宝差评多少天可以改 编辑:程序博客网 时间:2024/05/29 12:28

Mapper动态代理方式

  • Mapper动态代理方式
    • 开发规范
    • 整体布局
    • 开发流程
    • 注意事项
    • sqlMapConfigxml配置文件

开发规范

Mapper接口开发方法只需要程序员编写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的类型相同

整体布局

布局

开发流程

1、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"><mapper namespace="com.scarecrow.mapper.UserMapper">    <select id="findUserById" parameterType="Integer" resultType="com.scarecrow.javabean.User">    select * from user where id = #{v}    </select>    <select id="findUserByUsername" parameterType="String" resultType="com.scarecrow.javabean.User">    select * from user where username like "%"#{v}"%"    </select></mapper>

2、UserMapper(接口文件)

package com.scarecrow.mapper;import java.util.List;import com.scarecrow.javabean.QueryVo;import com.scarecrow.javabean.User;public interface UserMapper {    public User findUserById(Integer id);    public List<User> findUserByUsername(String name);}

3、User.java( javabean )

package com.scarecrow.javabean;import java.io.Serializable;import java.util.Date;public class User implements Serializable {    /**     *      */    private static final long serialVersionUID = 1L;    private Integer id;    private String username;// 用户姓名    private String sex;// 性别    private Date birthday;// 生日    private String address;// 地址    public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public String getUsername() {        return username;    }    public void setUsername(String username) {        this.username = username;    }    public String getSex() {        return sex;    }    public void setSex(String sex) {        this.sex = sex;    }    public Date getBirthday() {        return birthday;    }    public void setBirthday(Date birthday) {        this.birthday = birthday;    }    public String getAddress() {        return address;    }    public void setAddress(String address) {        this.address = address;    }    @Override    public String toString() {        return "User [id=" + id + ", username=" + username + ", sex=" + sex                + ", birthday=" + birthday + ", address=" + address + "]";    }}

创建完上述文件后 加载UserMapper.xml文件
修改SqlMapConfig.xml文件,添加以下所示的内容:

    <mappers><!--        <mapper resource="com.scarecrow.mapper/UserMapper.xml" />  -->        <!--  注册指定包下的所有mapper接口 -->        <package name="com.scarecrow.mapper"/>    </mappers>

注意事项

  1. 映射文件与接口文件命名必须相同
  2. 若使用<package name="com.scarecrow.mapper"/>则mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。

sqlMapConfig.xml配置文件

配置内容
SqlMapConfig.xml中配置的内容和顺序如下:

  • properties(属性)
  • settings(全局配置参数)
  • typeAliases(类型别名)
  • typeHandlers(类型处理器)
  • objectFactory(对象工厂)
  • plugins(插件)
  • environments(环境集合属性对象)
    • environment(环境子属性对象)
      • transactionManager(事务管理)
        • dataSource(数据源)
  • mappers(映射器)
原创粉丝点击