Mybatis之Mapper動態代理方式
阿新 • • 發佈:2019-02-14
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>
注意事項
- 對映檔案與介面檔案命名必須相同
- 若使用
<package name="com.scarecrow.mapper"/>
則mapper介面名稱和mapper對映檔名稱相同,且放在同一個目錄中。
sqlMapConfig.xml配置檔案
配置內容
SqlMapConfig.xml中配置的內容和順序如下:
- properties(屬性)
- settings(全域性配置引數)
- typeAliases(類型別名)
- typeHandlers(型別處理器)
- objectFactory(物件工廠)
- plugins(外掛)
- environments(環境集合屬性物件)
- environment(環境子屬性物件)
- transactionManager(事務管理)
- dataSource(資料來源)
- transactionManager(事務管理)
- environment(環境子屬性物件)
- mappers(對映器)