欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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 {

	/**
	 * 測試方法:查詢所有學生
	 * SqlSessionFactoryBuilder => SqlSessionFactory => SqlSession:相當于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) 它相當于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) 它相當于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:事務自動提交,false:不自動提交,默認值
		sqlSession = sqlSessionFactory.openSession();
		// 5. 創(chuàng)建接口 實現(xiàn)類對象
		 userMapper = sqlSession.getMapper(UserMapper.class);

	}

	/**
	 * 測試方法:查詢所有學生
	 * SqlSessionFactoryBuilder => SqlSessionFactory => SqlSession:相當于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)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 基于Java實現(xiàn)PDF文本旋轉(zhuǎn)傾斜

    基于Java實現(xiàn)PDF文本旋轉(zhuǎn)傾斜

    這篇文章主要介紹了基于Java實現(xiàn)PDF文本旋轉(zhuǎn)傾斜,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05
  • Spring?Boot?打包如何將依賴全部打進去

    Spring?Boot?打包如何將依賴全部打進去

    這篇文章主要介紹了Spring?Boot?打包如何將依賴全部打進去,在pom.xml中引入插件,需要在項目的pom.xml文件中,添加?Maven?插件??spring-boot-maven-plugin,本文結(jié)合實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-09-09
  • 一篇文章帶你入門java算術(shù)運算符(加減乘除余,字符連接)

    一篇文章帶你入門java算術(shù)運算符(加減乘除余,字符連接)

    這篇文章主要介紹了Java基本數(shù)據(jù)類型和運算符,結(jié)合實例形式詳細分析了java基本數(shù)據(jù)類型、數(shù)據(jù)類型轉(zhuǎn)換、算術(shù)運算符、邏輯運算符等相關(guān)原理與操作技巧,需要的朋友可以參考下
    2021-08-08
  • 一文教會你如何搭建vue+springboot項目

    一文教會你如何搭建vue+springboot項目

    最近在搗鼓?SpringBoot?與?Vue?整合的項目,所以下面這篇文章主要給大家介紹了關(guān)于如何通過一篇文章教會你搭建vue+springboot項目,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-05-05
  • Java實現(xiàn)Excel表單控件的添加與刪除

    Java實現(xiàn)Excel表單控件的添加與刪除

    本文通過Java代碼示例介紹如何在Excel表格中添加表單控件,包括文本框、單選按鈕、復選框、組合框、微調(diào)按鈕等,以及如何刪除Excel中的指定表單控件,需要的可以參考一下
    2022-05-05
  • SpringBoot自定義start詳細圖文教程

    SpringBoot自定義start詳細圖文教程

    這篇文章主要給大家介紹了關(guān)于SpringBoot自定義start的相關(guān)資料,主要講述如何自定義start,實現(xiàn)一些自定義類的自動裝配,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-11-11
  • Java修改maven的默認jdk版本為1.7的方法

    Java修改maven的默認jdk版本為1.7的方法

    這篇文章主要介紹了Java修改maven的默認jdk版本為1.7的方法,需要的朋友可以參考下
    2018-02-02
  • springboot?使用?minio的示例代碼

    springboot?使用?minio的示例代碼

    Minio是Apcche旗下的一款開源的輕量級文件服務器,基于對象存儲,協(xié)議是基于Apache?License?v2.0,開源可用于商務,本文給大家介紹下springboot?使用?minio的示例代碼,感興趣的朋友看看吧
    2022-03-03
  • Java中的Phaser使用詳解

    Java中的Phaser使用詳解

    這篇文章主要介紹了Java中的Phaser使用詳解,與其他障礙不同,注冊在phaser上進行同步的parties數(shù)量可能會隨時間變化,任務可以隨時進行注冊,需要的朋友可以參考下
    2023-11-11
  • MyBatisPlus批量添加的優(yōu)化與報錯解決

    MyBatisPlus批量添加的優(yōu)化與報錯解決

    MybatisPlus是一個高效的java持久層框架,它在Mybatis的基礎(chǔ)上增加了一些便捷的功能,提供了更加易用的API,可以大幅度提高開發(fā)效率,這篇文章主要給大家介紹了關(guān)于MyBatisPlus批量添加的優(yōu)化與報錯解決的相關(guān)資料,需要的朋友可以參考下
    2023-05-05

最新評論