1. 程式人生 > >Mybatis之Mapper動態代理方式

Mybatis之Mapper動態代理方式

Mapper動態代理方式

開發規範

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 mapper
PUBLIC "-//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(對映器)