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的型別相同。

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);