中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Mybatis如何實現使用注解優化代碼

發布時間:2020-11-03 15:20:28 來源:億速云 閱讀:170 作者:Leah 欄目:開發技術

這篇文章運用簡單易懂的例子給大家介紹Mybatis如何實現使用注解優化代碼,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

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

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

/**
* 根據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中使用沒有優化的代碼展示

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對象,提供了操作數據庫的CRUD方法
	 */
	@Test
	public void testFindAllUsers()throws Exception{
		// 1. 通過Resources類,加載sqlMapConfig.xml,得到文件輸入流對象
		// Resources類作用:專門讀取src目錄下的資源文件
		InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");
		// 2. 實例化會話工廠創建類SqlSessionFactoryBuilder
		SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
		// 3. 通過會話工廠創建類,讀取上面的輸入流,得到會話工廠SqlSessionFactory類
		SqlSessionFactory sqlSessionFactory = builder.build(in);
		// 4. 使用SqlSessionFactory對象,創建SqlSession對象
		// a) 它相當于JDBC中的Connection對象,提供了操作數據庫的CRUD方法
		// b) 它提供了一個getMapper()方法,獲取接口的實現對象。
		SqlSession sqlSession = sqlSessionFactory.openSession();

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

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

你會發現在這倆個方法中有很多相似的代碼,每次寫都要重新寫,關鍵是還沒有啥軟用,現在來看看優化之后的代碼

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;

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

	}

	/**
	 * 測試方法:查詢所有學生
	 * SqlSessionFactoryBuilder => SqlSessionFactory => SqlSession:相當于JDBC中的Connection對象,提供了操作數據庫的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. 調用接口的方法根據id查詢用戶
		User user = userMapper.findUserById(1);
		System.out.println("user = " + user);

	}

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

		sqlSession.close();
	}
}

關于Mybatis如何實現使用注解優化代碼就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

太原市| 惠安县| 黄梅县| 新竹市| 淮安市| 宜兴市| 滕州市| 珲春市| 行唐县| 武胜县| 磴口县| 甘孜县| 静海县| 青神县| 金华市| 宜君县| 阿坝| 芦溪县| 靖州| 大洼县| 灵宝市| 波密县| 平乡县| 岢岚县| 淳安县| 仪征市| 怀安县| 房产| 房山区| 金秀| 江川县| 喜德县| 浮梁县| 和龙市| 鄂托克前旗| 马尔康县| 许昌县| 东乌珠穆沁旗| 平顶山市| 扎赉特旗| 阿拉善右旗|