真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Mybatis中怎么實(shí)現(xiàn)Mapper動態(tài)代理

這篇文章將為大家詳細(xì)講解有關(guān)Mybatis中怎么實(shí)現(xiàn)Mapper動態(tài)代理,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

創(chuàng)新互聯(lián)建站于2013年開始,先為南潯等服務(wù)建站,南潯等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為南潯企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

一、什么是Mapper的動態(tài)代理

采用Mapper動態(tài)代理方法只需要編寫相應(yīng)的Mapper接口(相當(dāng)于Dao接口),那么Mybatis框架根據(jù)接口定義創(chuàng)建接口的動態(tài)代理對象,代理對象的方法體同Dao接口實(shí)現(xiàn)類方法。

Mapper接口開發(fā)需要遵循以下規(guī)范:

1、Mapper.xml文件中的namespace與mapper接口的全類名相同。

2、Mapper接口方法名和Mapper.xml中定義的每個(gè)statement的id相同。

3、Mapper接口方法的輸入?yún)?shù)類型和mapper.xml中定義的每個(gè)sql 的parameterType的類型相同。

4、Mapper接口方法的輸出參數(shù)類型和mapper.xml中定義的每個(gè)sql的resultType的類型相同。

二、實(shí)例演示

這里只演示了利用代理進(jìn)行查詢和插入的操作,其他操作與之情況類似。只需要在接口中定義相關(guān)方法,然后在xml中進(jìn)行相關(guān)配置即可。

這個(gè)演示是建立在前一個(gè)增刪改查的項(xiàng)目基礎(chǔ)上。項(xiàng)目整體目錄大致相同?;緦傩晕募畔⒁蚕嗤_@里不作詳述。

1、新建一個(gè)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 findUserByUsername(String username) throws Exception;
	//添加用戶信息
	public void insertUser(User user)throws Exception; 
}

2、配置xml文件

UserMapper.xml





	
		select * from user where id = #{id}
		
	
		select * from user where username like '%${value}%'
		
	
		
			select LAST_INSERT_ID()
		
		insert into user(username,birthday,sex,address)
		values(#{username},#{birthday},#{sex},#{address})
	

注意到配置文件中的id屬性值和map接口中的方法名是一一對應(yīng)的。

3、在SqlMapConfig.xml中加入映射文件


	
		
    

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 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查詢測試

Mybatis中怎么實(shí)現(xiàn)Mapper動態(tài)代理

模糊查詢測試

Mybatis中怎么實(shí)現(xiàn)Mapper動態(tài)代理

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

Mybatis中怎么實(shí)現(xiàn)Mapper動態(tài)代理

Mybatis中怎么實(shí)現(xiàn)Mapper動態(tài)代理

關(guān)于Mybatis中怎么實(shí)現(xiàn)Mapper動態(tài)代理就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。


本文題目:Mybatis中怎么實(shí)現(xiàn)Mapper動態(tài)代理
當(dāng)前鏈接:http://weahome.cn/article/gpdepp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部