Mybatis之Mapper動態代理
阿新 • • 發佈:2018-12-15
目錄
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的型別相同。
Mapper介面定義
public interface UserMapper {
//根據使用者id查詢使用者資訊
public User findUserById(int id);
//查詢使用者列表
public List<User> findUserByUsername(String username);
//新增使用者資訊
public void insertUser(User user);
}
配置對映檔案名稱空間
<mapper namespace="com.mark.mapper.UserMapper">
<?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.mark.mapper.UserMapper"> <!-- 注意這裡的 namespace必須對應著map介面的全類名--> <select id="findUserById" parameterType="int" resultType="user"> select * from user where id = #{id} </select> <select id="findUserByUsername" parameterType="java.lang.String" resultType="user"> select * from user where username like '%${value}%' </select> <insert id="insertUser" parameterType="user"> <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer"> select LAST_INSERT_ID() </selectKey> insert into user(username,birthday,sex,address) values(#{username},#{birthday},#{sex},#{address}) </insert>
測試程式
UserMapper mapper = sqlSession.getMapper(UserMapper.class); User user = mapper.findUserById(10);