【mybatis基礎】mybatis開發dao兩種方法
mybatis是一個支援普通SQL查詢,儲存過程和高階對映的優秀的持久層的框架,是apache下的頂級專案。mybatis消除了幾乎所有的JDBC程式碼和引數的手工設定以及對結果集的檢索封裝。mybatis可以使用簡單的XML或註解用於配置和原始對映,將介面和Java的POJO對映成資料庫中的記錄。
其中,開發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.java(UserMapper.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.xml中namespace等於mapper介面地址
(2)mapper.java介面中的方法名和mapper.xml中statement的id一致
(3)mapper.java介面中的方法輸入引數型別和mapper.xml中statement的parameterType指定的型別一致。
(4)mapper.java介面中的方法返回值型別和mapper.xml中statement的resultType指定的型別一致。
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