1. 程式人生 > >【mybatis基礎】mybatis開發dao兩種方法

【mybatis基礎】mybatis開發dao兩種方法

mybatis是一個支援普通SQL查詢,儲存過程和高階對映的優秀的持久層的框架,是apache下的頂級專案。mybatis消除了幾乎所有的JDBC程式碼和引數的手工設定以及對結果集的檢索封裝。mybatis可以使用簡單的XML或註解用於配置和原始對映,將介面和JavaPOJO對映成資料庫中的記錄。

其中,開發dao有兩種方法,一種原始的dao開發方法,程式設計師需要寫dao介面和dao實現類。另一種是mapper代理方法,程式設計師只需要寫mapper介面相當於dao介面。

原始dao開發方法

1.編寫dao介面(UserDao

public interface UserDao {
	// 根據id查詢使用者資訊
	public User findUserById(int id) throws Exception;
}

2.編寫dao實現類

public class UserDaoImpl implements UserDao {

	// 需要向dao實現類中注入SqlSessionFactory
	// 這裡通過構造方法注入
	private SqlSessionFactory sqlSessionFactory;

	public UserDaoImpl(SqlSessionFactory sqlSessionFactory) {
		this.sqlSessionFactory = sqlSessionFactory;
	}

	@Override
	public User findUserById(int id) throws Exception {
		SqlSession sqlSession = sqlSessionFactory.openSession();
		
		//這裡的test.findUserById是與下面的對映檔案user.xml中的namespace+id有關。
		User user = sqlSession.selectOne("test.findUserById", id);

		// 釋放資源
		sqlSession.close();

		return user;

	}
}

3.編寫對映檔案(user.xml

<mapper namespace="test">
	<select id="findUserById" parameterType="int" resultType="cn.itcast.mybatis.po.User">
		SELECT * FROM USER WHERE id=#{value}
	</select>
</mapper>

4.編寫測試類

public class UserDaoImplTest {
	private SqlSessionFactory sqlSessionFactory;

	// 此方法是在執行testFindUserById之前執行
	@Before
	public void setUp() throws Exception {
		// 建立sqlSessionFactory

		// mybatis配置檔案
		String resource = "SqlMapConfig.xml";
		// 得到配置檔案流
		InputStream inputStream = Resources.getResourceAsStream(resource);

		// 建立會話工廠,傳入mybatis的配置檔案資訊
		sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
	}

	@Test
	public void testUserDaoImpl() throws Exception{
		// 建立UserDao的物件
		UserDao userDao = new UserDaoImpl(sqlSessionFactory);

		// 呼叫UserDao的方法
		User user = userDao.findUserById(1);
				
		System.out.println(user);
	}
}
測試結果:



mapper代理方法

1.編寫mapper.javaUserMapper.java相當於java介面)

public interface UserMapper {
	// 根據id查詢使用者資訊
	public User findUserById(int id) throws Exception;
}

2.編寫mapper.xml(UserMapper.xml)

<mapper namespace="cn.itcast.mybatis.mapper.UserMapper">

	<!--通過id查詢使用者表的記錄 -->
	<select id="findUserById" parameterType="int" resultType="cn.itcast.mybatis.po.User">
		SELECT * FROM USER WHERE id=#{value}
	</select>

</mapper>

注意:

1)在mapper.xmlnamespace等於mapper介面地址

2mapper.java介面中的方法名和mapper.xmlstatementid一致

3mapper.java介面中的方法輸入引數型別和mapper.xmlstatementparameterType指定的型別一致。

4mapper.java介面中的方法返回值型別和mapper.xmlstatementresultType指定的型別一致。

3.編寫測試類

public class UserMapperTest {

	private SqlSessionFactory sqlSessionFactory;

	// 此方法是在執行testFindUserById之前執行
	@Before
	public void setUp() throws Exception {
		// 建立sqlSessionFactory

		// mybatis配置檔案
		String resource = "SqlMapConfig.xml";
		// 得到配置檔案流
		InputStream inputStream = Resources.getResourceAsStream(resource);

		// 建立會話工廠,傳入mybatis的配置檔案資訊
		sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
	}
	
	@Test
	public void testFindUserById() throws Exception {
		SqlSession sqlSession=sqlSessionFactory.openSession();
		
		//建立UserMapper物件,mybatis自動生成mapper代理物件
		UserMapper userMapper =sqlSession.getMapper(UserMapper.class);
		
		//呼叫UserMapper的方法
		User user=userMapper.findUserById(1);
		
		System.out.println(user);
		
		sqlSession.close();
	}

}
測試結果:



現在最常用的方法是第二種使用mapper代理的方法,不過第一種也有公司在用所以兩種都要知道。


相關推薦

mybatis基礎mybatis開發dao方法

mybatis是一個支援普通SQL查詢,儲存過程和高階對映的優秀的持久層的框架,是apache下的頂級專案。mybatis消除了幾乎所有的JDBC程式碼和引數的手工設定以及對結果集的檢索封裝。myba

JavaSE基礎生成隨機數的三方法

new random nbsp 最小 最小值 () 通過 java -s 方法一:   (數據類型)(最小值+Math.random()*(最大值-最小值+1)) 舉例:    (int)(1+Math.random()*(10-1+1))  生成1~10的隨機數。 方法

java基礎java開發異常狀態碼

背景:    在我們開發的過程中,我們很難不注意到系統反饋給我們的一些(異常資訊)錯誤狀態,而且他們還都有自己的專門的標識碼,下面我們來進行一下總結,那些我們常見的錯誤狀態碼: HTTP請求錯誤400、401、402、403、404、405、406、407、412、4

MyBatis無限級分類實現的方法--自關聯與map集合

except app exce utf-8 elf findall ldr ati tex 1、這回先創建數據庫吧 下表cid是CategoryId的縮寫,cname是CategoryName的縮寫,pid是parentId的縮寫 無限級分類一般都包含這三個屬性,至少也要包

Spring+MyBatis整合、介面實現元件方法、整合流程

Spring+Mybatis mybatis-spring.jar整合包 MapperFactoryBean元件,封裝了根據Mapper對映器介面生成實現元件的功能 結合 先把包都引入 ioc aop dao dbcp 當然在之前的Mybatis下增

Java基礎java繼承中的構造方法

小編現在學習了一下繼承中的構造方法,覺得還是總結一下比較好。【特點】1、子類的構造的過程中必須呼叫其基類的構造方法。2、子類可以在自己的構造方法中使用super(argument_list)呼叫基類的構

Spark篇---SparkStreaming+Kafka的模式receiver模式和Direct模式

一、前述 SparkStreamin是流式問題的解決的代表,一般結合kafka使用,所以本文著重講解sparkStreaming+kafka兩種模式。 二、具體 1、Receiver模式    原理圖:  receiver模式理解: 在SparkStreaming程式執行起來後,Executor中會有r

Restful介面restful介面的使用方式

        小編最近的專案是好幾個團隊的一塊合作,由於專案大,功能多,各個團隊負責的東西不同,我的團隊除了自己的開發前端和後端外,還負責給別的團隊提供後端支援,在這裡就用上了restful介面.

個人筆記android studio gradle 更新方法更新

android studio gradle 兩種更新方法更新 第一種.Android studio更新 第一步:在你所在專案資料夾下:你專案根目錄gradlewrappergradle-wrapper.properties 修改gradle-wrapper.prop

opencv學習矩陣CvMat的宣告和初始化方法

double a[9]={1,2,3;4,5,6;7,8,9} //方式一:直接宣告 CvMat mat_01; //矩陣變數 mat_01 = cvMat(3,3,CV_64FC1

MyBatis框架Mybatis開發dao方法第一部分

下面來討論mybatis開發Dao的方法 先來說一下基本架構流程中使用到的幾個類 1.SqlSession使用範圍 1.1SqlSessionFactoryBuilder  通過SqlSessionFactoryBuilder建立會話工廠SqlSessionFactory

SSM-MyBatis框架MyBatis開發DAO的方式

Mybatis開發Dao的方式   MyBatis開發Dao有兩種方式:原始Dao的開發方式,Mapper動態代理的方式。     兩種開發方式在企業開發中均有運用。都要掌握。    使用myBatis時,需要對其進行一個全域性的管理配置。     sqlMappingCo

myabtis入門級03——mybatis開發dao層的方法

一、先來談談SqlSession的適用範圍 通過SqlSessionFactoryBuilder建立會話工廠SqlSessionFactory。 將SqlSessionFactoryBuilder當成一個工具類使用即可,不需要使用單例管理SqlSessionFactoryBu

轉自mybatis入門基礎----高階對映(一對一,一對多,多對多)

  轉自:http://www.cnblogs.com/selene/p/4627446.html 可參考https://blog.csdn.net/liu_yanzhao/article/details/78573023 閱讀目錄 一:訂單商品資料模型 二、一

java框架MyBatis-Plus(1)--MyBatis-Plus快速上手開發及核心功能體驗

1.MyBatis-Plus入門開發及配置 1.1.MyBatis-Plus簡介 MyBatis-Plus(簡稱 MP)是一個 MyBatis的增強工具,在 MyBatis 的基礎上只做增強不做改變,為簡化開發、提高效率而生。 MyBatis-Plus易於學習,官網提供了基於SpringBoot的中文文件,社

持久化框架Mybatis與Hibernate的詳細對比

很大的 效率 myba 今天 http 目的 ping pin 增刪 作為一位優秀的程序員,只知道一種ORM框架是遠遠不夠的。在開發項目之前,架構的技術選型對於項目是否成功起到至關重要的作用。我們不僅要了解同類型框架的原理以及技術實現,還要深入的理解各自的優缺點,以便我們能

Java基礎-多重For迴圈的跳出方式

先來小段Demo,自己跑一下就能看到效果了: public static void main(String[] args) { List<String> listA = new ArrayList<String>(); List<String> lis

學習轉載MyBatis原始碼解析——日誌記錄

宣告:轉載自前輩:開心的魚a1 一 .概述 MyBatis沒有提供日誌的實現類,需要接入第三方的日誌元件,但第三方日誌元件都有各自的Log級別,且各不相同,但MyBatis統一提供了trace、debug、warn、error四個級別; 自動掃描日誌實現,並且第三方日誌外掛載入優先順序如下:sl

java專案mybatis中的mapper查詢時返回其他實體(多用於多表查詢)

<select id="selectUserorder" resultType="com.pojo.Orderdetail" parameterType="java.lang.Integer"> SELECT a.o_status, a.o_no, a.uid,

持久化框架Mybatis簡介與原理

什麼是Mybatis          MyBatis 本是apache的一個開源專案iBatis, 2010年這個專案由apache software foundation 遷移到了google code,並且改名為MyBatis 。iBATIS一詞來源於“internet