最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mybatis如何使用注解優(yōu)化代碼

 更新時間:2020年11月02日 09:31:10   作者:愛寫代碼的基  
這篇文章主要介紹了Mybatis如何使用注解優(yōu)化代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

entity層代碼不變,因為是優(yōu)化,所以在dao層新增了一個通過id查詢用戶的功能,現(xiàn)在來演示一下優(yōu)化前后的代碼對比,希望你們喜歡

entity層代碼不變,dao層中的UserMapper中添加一個方法

/**
* 根據(jù)id查詢用戶
*/
User findUserById(int id);

在UserMapper.xml映射文件中添加

  <select id="findUserById" parameterType="int" resultType="com.vg.entity.User">
    select * from user where id = #{id};
  </select>


在test層中的test中使用沒有優(yōu)化的代碼展示

package com.vg.test;



import com.vg.dao.UserMapper;
import com.vg.entity.User;
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.Test;

import java.io.InputStream;
import java.util.List;

/**
 * 測試類
 */
public class TestUserMapper {

	/**
	 * 測試方法:查詢所有學(xué)生
	 * SqlSessionFactoryBuilder => SqlSessionFactory => SqlSession:相當(dāng)于JDBC中的Connection對象,提供了操作數(shù)據(jù)庫的CRUD方法
	 */
	@Test
	public void testFindAllUsers()throws Exception{
		// 1. 通過Resources類,加載sqlMapConfig.xml,得到文件輸入流對象
		// Resources類作用:專門讀取src目錄下的資源文件
		InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");
		// 2. 實例化會話工廠創(chuàng)建類SqlSessionFactoryBuilder
		SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
		// 3. 通過會話工廠創(chuàng)建類,讀取上面的輸入流,得到會話工廠SqlSessionFactory類
		SqlSessionFactory sqlSessionFactory = builder.build(in);
		// 4. 使用SqlSessionFactory對象,創(chuàng)建SqlSession對象
		// a) 它相當(dāng)于JDBC中的Connection對象,提供了操作數(shù)據(jù)庫的CRUD方法
		// b) 它提供了一個getMapper()方法,獲取接口的實現(xiàn)對象。
		SqlSession sqlSession = sqlSessionFactory.openSession();

		// 5. 獲取接口 UserMapper 實現(xiàn)類對象(代理對象)
		UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
		System.out.println("userMapper = " +userMapper);
		// 6. 執(zhí)行數(shù)據(jù)庫的查詢操作,輸出用戶信息
		List<User> userList = userMapper.findAllUsers();
		for (User user : userList) {
			System.out.println(user);
		}
		// 7. 關(guān)閉會話,釋放資源。
		sqlSession.close();
	}
	@Test
	public void testFindUserById()throws Exception{
		// 1. 通過Resources類,加載sqlMapConfig.xml,得到文件輸入流對象
		// Resources類作用:專門讀取src目錄下的資源文件
		InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");
		// 2. 實例化會話工廠創(chuàng)建類SqlSessionFactoryBuilder
		SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
		// 3. 通過會話工廠創(chuàng)建類,讀取上面的輸入流,得到會話工廠SqlSessionFactory類
		SqlSessionFactory sqlSessionFactory = builder.build(in);
		// 4. 使用SqlSessionFactory對象,創(chuàng)建SqlSession對象
		// a) 它相當(dāng)于JDBC中的Connection對象,提供了操作數(shù)據(jù)庫的CRUD方法
		// b) 它提供了一個getMapper()方法,獲取接口的實現(xiàn)對象。
		SqlSession sqlSession = sqlSessionFactory.openSession();

		// 5. 獲取接口 UserMapper 實現(xiàn)類對象(代理對象)
		UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
		System.out.println("userMapper = " +userMapper);
		// 6. 調(diào)用接口的方法根據(jù)id查詢用戶
		User user = userMapper.findUserById(1);
		System.out.println("user = " + user);
		// 7. 關(guān)閉會話,釋放資源。
		sqlSession.close();
	}
}

你會發(fā)現(xiàn)在這倆個方法中有很多相似的代碼,每次寫都要重新寫,關(guān)鍵是還沒有啥軟用,現(xiàn)在來看看優(yōu)化之后的代碼

package com.vg.test;

import com.vg.dao.UserMapper;
import com.vg.entity.User;
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.After;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

/**
 * 測試類
 */
public class TestUserMapper {
	private static SqlSessionFactory sqlSessionFactory =null;
	private SqlSession sqlSession =null;
	private UserMapper userMapper =null;

	// 該方法在所有測試方法執(zhí)行之前執(zhí)行1次
	@BeforeClass
	public static void init() throws Exception {
		// 1. 通過Resources類,加載sqlMapConfig.xml,得到文件輸入流對
		InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");
		// 2. 實例化會話工廠創(chuàng)建類SqlSessionFactoryBuilder對象
		SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
		// 3. 根據(jù)字節(jié)輸入流獲取SqlSessionFactory對象
		sqlSessionFactory = builder.build(in);
	}
	// 該方法會在每個測試方法執(zhí)行之前執(zhí)行1次
	@Before
	public void before(){
		// 4. 獲取SqlSession對象,等價連接對象
		// true:事務(wù)自動提交,false:不自動提交,默認(rèn)值
		sqlSession = sqlSessionFactory.openSession();
		// 5. 創(chuàng)建接口 實現(xiàn)類對象
		 userMapper = sqlSession.getMapper(UserMapper.class);

	}

	/**
	 * 測試方法:查詢所有學(xué)生
	 * SqlSessionFactoryBuilder => SqlSessionFactory => SqlSession:相當(dāng)于JDBC中的Connection對象,提供了操作數(shù)據(jù)庫的CRUD方法
	 */
	@Test
	public void testFindAllUsers() throws Exception{
		List<User> userList = userMapper.findAllUsers();
		for (User user : userList) {
			System.out.println(user);
		}
	}

	@Test
	public void testFindUserById()throws Exception{
		// 6. 調(diào)用接口的方法根據(jù)id查詢用戶
		User user = userMapper.findUserById(1);
		System.out.println("user = " + user);

	}

	@After
	public void after() {
		// 7. 關(guān)閉會話,釋放資源。

		sqlSession.close();
	}
}

這樣子是不是比以前的代碼簡單起來了呢?

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • springMVC在restful風(fēng)格的性能優(yōu)化方案

    springMVC在restful風(fēng)格的性能優(yōu)化方案

    這篇文章主要介紹了springMVC在restful風(fēng)格的性能優(yōu)化方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 如何使用BufferedReader循環(huán)讀文件

    如何使用BufferedReader循環(huán)讀文件

    這篇文章主要介紹了如何使用BufferedReader循環(huán)讀文件的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • java實現(xiàn)文件的上傳功能

    java實現(xiàn)文件的上傳功能

    這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)文件的上傳功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Java System.currentTimeMillis()時間的單位轉(zhuǎn)換與計算方式案例詳解

    Java System.currentTimeMillis()時間的單位轉(zhuǎn)換與計算方式案例詳解

    這篇文章主要介紹了Java System.currentTimeMillis()時間的單位轉(zhuǎn)換與計算方式案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Java創(chuàng)建數(shù)組、賦值的四種方式詳解(聲明+創(chuàng)建+初始化?)

    Java創(chuàng)建數(shù)組、賦值的四種方式詳解(聲明+創(chuàng)建+初始化?)

    數(shù)組是一種數(shù)據(jù)結(jié)構(gòu),用來存儲同一類型值的集合一旦創(chuàng)建了數(shù)組,就不能再改變它的長度,下面這篇文章主要給大家介紹了關(guān)于Java創(chuàng)建數(shù)組、賦值的四種方式(聲明+創(chuàng)建+初始化?)的相關(guān)資料,需要的朋友可以參考下
    2024-04-04
  • Java創(chuàng)建線程池的幾種方式代碼示例

    Java創(chuàng)建線程池的幾種方式代碼示例

    這篇文章主要介紹了Java中創(chuàng)建線程池的四種方式,包括使用Executors類、ThreadPoolExecutor類、Future和Callable接口以及Spring的ThreadPoolTaskExecutor,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-01-01
  • Java中的set集合是什么意思

    Java中的set集合是什么意思

    這篇文章主要介紹了Java中的set集合是什么意思,詳細(xì)地講解一下Collection集合中的另外一個分支——Set系列集合,需要的朋友可以參考下
    2022-05-05
  • Spring框架中一個有用的小組件之Spring Retry組件詳解

    Spring框架中一個有用的小組件之Spring Retry組件詳解

    Spring Retry 是從 Spring batch 中獨立出來的一個功能,主要實現(xiàn)了重試和熔斷,對于那些重試后不會改變結(jié)果,毫無意義的操作,不建議使用重試,今天通過本文給大家介紹Spring Retry組件詳解,感興趣的朋友一起看看吧
    2021-07-07
  • JAVA語言編程格式高級規(guī)范

    JAVA語言編程格式高級規(guī)范

    這篇文章主要介紹了JAVA語言編程格式高級規(guī)范,需要的朋友可以參考下
    2015-05-05
  • Java快速排序QuickSort(實例)

    Java快速排序QuickSort(實例)

    下面小編就為大家?guī)硪黄狫ava快速排序QuickSort(實例)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10

最新評論

南丹县| 九寨沟县| 五原县| 汕头市| 台南县| 涿州市| 鄂托克旗| 昌图县| 鄂伦春自治旗| 湟源县| 西和县| 大新县| 繁峙县| 荔浦县| 凤城市| 平远县| 清水河县| 阿拉善左旗| 山东省| 福安市| 永善县| 宁武县| 安达市| 涟源市| 永宁县| 铁岭市| 苏尼特左旗| 江油市| 东兰县| 蒙城县| 响水县| 杨浦区| 齐齐哈尔市| 巴塘县| 奎屯市| 博湖县| 改则县| 郸城县| 武夷山市| 科尔| 夏河县|