這篇文章將為大家詳細講解有關(guān)Mybatis中怎么實現(xiàn)Mapper動態(tài)代理,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
創(chuàng)新互聯(lián)建站于2013年開始,先為南潯等服務建站,南潯等地企業(yè),進行企業(yè)商務咨詢服務。為南潯企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。
一、什么是Mapper的動態(tài)代理
采用Mapper動態(tài)代理方法只需要編寫相應的Mapper接口(相當于Dao接口),那么Mybatis框架根據(jù)接口定義創(chuàng)建接口的動態(tài)代理對象,代理對象的方法體同Dao接口實現(xiàn)類方法。
Mapper接口開發(fā)需要遵循以下規(guī)范:
1、Mapper.xml文件中的namespace與mapper接口的全類名相同。
2、Mapper接口方法名和Mapper.xml中定義的每個statement的id相同。
3、Mapper接口方法的輸入?yún)?shù)類型和mapper.xml中定義的每個sql 的parameterType的類型相同。
4、Mapper接口方法的輸出參數(shù)類型和mapper.xml中定義的每個sql的resultType的類型相同。
二、實例演示
這里只演示了利用代理進行查詢和插入的操作,其他操作與之情況類似。只需要在接口中定義相關(guān)方法,然后在xml中進行相關(guān)配置即可。
這個演示是建立在前一個增刪改查的項目基礎上。項目整體目錄大致相同。基本屬性文件信息也相同。這里不作詳述。
1、新建一個com.kang.mapper的包,定義map接口,接口名任意,這里是UserMapper。
package com.kang.mapper;
import java.util.List;
import com.kang.pojo.User;
public interface UserMapper {
//根據(jù)用戶id查詢用戶信息
public User findUserById(int id) throws Exception;
//查詢用戶列表
public List<User> findUserByUsername(String username) throws Exception;
//添加用戶信息
public void insertUser(User user)throws Exception;
}2、配置xml文件
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.kang.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>
</mapper>注意到配置文件中的id屬性值和map接口中的方法名是一一對應的。
3、在SqlMapConfig.xml中加入映射文件
<!-- 加載 映射文件 --> <mappers> <mapper resource="map/UserMapper.xml" /> </mappers>
4、測試代碼
package com.kang.test;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.List;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;
import com.kang.mapper.UserMapper;
import com.kang.pojo.User;
public class UserTest {
// 會話工廠
private SqlSessionFactory sqlSessionFactory;
@Before
public void createSqlSessionFactory() throws IOException {
// 配置文件SqlMapConfig.xml在類路徑下
String resource = "SqlMapConfig.xml";
// 得到配置文件流
InputStream inputStream = Resources.getResourceAsStream(resource);
// 創(chuàng)建會話工廠,傳入mybatis的配置文件信息
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}
@Test
public void testFindUserById() throws Exception {
//獲取session
SqlSession session = sqlSessionFactory.openSession();
//獲取mapper接口的代理對象
UserMapper userMapper = session.getMapper(UserMapper.class);
//調(diào)用代理對象方法
User user = userMapper.findUserById(27);
System.out.println(user);
//關(guān)閉session
session.close();
System.out.println("---------執(zhí)行完畢-----------");
}
@Test
public void testFindByUsername() throws Exception{
//獲取session
SqlSession session = sqlSessionFactory.openSession();
//獲取mapper接口的代理對象
UserMapper userMapper = session.getMapper(UserMapper.class);
//調(diào)用代理對象方法
List<User> list=userMapper.findUserByUsername("張");
for (User user : list) {
System.out.println(user);
}
//關(guān)閉session
session.close();
System.out.println("---------執(zhí)行完畢-----------");
}
@Test
public void testInsert() throws Exception{
User user=new User();
user.setUsername("cxk");
user.setSex("1");
user.setBirthday(new Date());
user.setAddress("四川成都");
SqlSession session=sqlSessionFactory.openSession();
UserMapper userMapper=session.getMapper(UserMapper.class);
userMapper.insertUser(user);
session.commit();
//關(guān)閉session
session.close();
System.out.println("---------執(zhí)行完畢-----------");
}
}5、單元測試
id查詢測試

模糊查詢測試

插入數(shù)據(jù)測試


關(guān)于Mybatis中怎么實現(xiàn)Mapper動態(tài)代理就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
新聞標題:Mybatis中怎么實現(xiàn)Mapper動態(tài)代理
網(wǎng)站鏈接:http://www.chinadenli.net/article38/gpdepp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供標簽優(yōu)化、網(wǎng)站設計公司、網(wǎng)站收錄、網(wǎng)站建設、App開發(fā)、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)