摘要:概述是一款優秀的基于的持久層框架,封裝代碼,實現將參數映射到語句并執行,最后將執行結果映射到對象并返回的功能,支持自定義存儲過程和高級映射。命名無要求,但應該有意義。創建實體和映射文件是映射框架,所以我們需要對應創建類,與數據庫表進行映射。
概述
Mybatis是一款優秀的、基于SQL的持久層框架,封裝JDBC代碼,實現將參數映射到SQL語句并執行,最后將執行結果映射到JAVA對象并返回的功能,支持自定義SQL、存儲過程和高級映射。
本系列文章是基于Mybatis 3.4.6 版本。
創建項目我們使用maven來構建和管理項目,使用的IDEA開發工具來學習,這些都是目前很優秀的并且使用廣泛的工具,流暢的開發體驗便于提高開發效率,按如下步驟進行:
在IDEA中點擊【file】-->【New】-->【Project...】,打開New Project窗口向導,如下圖:
選擇Maven并勾選Create from archetype,最后選擇maven-archetype-quickstart,點擊【Next】,如下圖:
GroupId、ActifactId和Version是項目的maven坐標,作用就是便于在maven倉庫中查找項目以供其他項目使用。命名無要求,但應該有意義。點擊【Next】,如下圖:
以上界面是對新建項目的描述信息,點擊【Next】,如下圖:
注意此界面的Project Name,此處默認是上個界面定義的去掉"-"的ActifactId,此處可以加上"-",最終如下圖:
點擊【Finish】,最終的項目結構如下:
打開pom文件,添加相關依賴,代碼如下:
org.mybatis mybatis 3.4.6 mysql mysql-connector-java 5.1.38 junit junit 4.12 test org.apache.logging.log4j log4j-api 2.11.0 org.apache.logging.log4j log4j-core 2.11.0
至此,項目已經創建完成,下一步開始編碼。
編碼實現在開始編碼之前,需要先創建測試使用的表,mybatis本身是ORM框架,所以數據庫肯定少不了,我們使用的是mysql數據庫,可以使用一個已有數據庫或者新建一個新庫,在此基礎上新建表,如下:
CREATE TABLE `sys_user` ( `id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT "主鍵", `username` varchar(50) DEFAULT NULL COMMENT "用戶名", `password` varchar(50) DEFAULT NULL COMMENT "用戶密碼", `phone` varchar(20) DEFAULT NULL COMMENT "手機號", PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT="用戶表";
創建完數據庫表后,我們插入一些測試數據,如下:
insert into sys_user(username,password,phone) values ("zhangsan","123456","13901234567"), ("lishi","123456","13901234567"), ("wangwu","123456","13901234567");
準備好數據庫表和測試數據后,開始編寫代碼。
創建實體和映射文件
Mybatis是ORM映射框架,所以我們需要對應創建java類,與數據庫表進行映射。
在src/main/java下創建包:com.github.dalianghe.model,并在該包下創建數據庫sys_user表的映射類SysUser,代碼如下:
package com.github.daliang.model; public class SysUser{ private Long id; private String username; private String password; private String phone; // get/set // 重寫toString @Override public String toString() { return "User["+ "id="+this.getId()+"," + "username="+this.getUsername()+ ",password="+this.getPassword()+ ",phone="+this.getPhone() +"]"; } }
在src/mainresources下創建mappers目錄,并在其下創建SysUserMapper.xml文件,代碼如下:
說明:
< mapper>:XML根元素,屬性namespace定義了當前XML命名空間
< select>標簽:定義select查詢sql,id屬性定義當前select查詢的唯一ID,resultType定義查詢返回類型或集合元素類型(此處使用了配置別名,詳細見Mybatis配置文件,如果不使用別名,此處應該制定類的全限定名即:com.github.dalianghe.model.SysUser)。標簽內容為要執行的sql語句。
Mybatis配置文件
配置Mybatis有多種方法,本例使用XML方式進行配置,在classpass(src/main/resource)下創建mybatis-config.xml文件,并進行配置,代碼如下:
配置日志
本例使用log4j2框架進行日志輸出(所依賴的jar包已經在pom文件中進行了配置),便于我們觀察Mybatis行為,在classpath下新建log4j2.xml文件,并進行配置,代碼如下:
編寫測試
以上代碼編寫完成,現在使用Juint編寫測試用例,代碼如下:
public class SysUserMapperTest { private static SqlSessionFactory sqlSessionFactory ; @BeforeClass public static void init(){ try{ //通過Resources工具類將mybatis配置文件讀入Reader Reader reader = Resources.getResourceAsReader("mybatis-config.xml"); //通過SqlSessionFactoryBuilder構造類使用reader創建SqlSessionFactory對象 //在創建SqlSessionFactory對象過程中,首先解析mybatis-config.xml配置文件,并讀取mappers標簽配置的Mapper.xml進行解析。 //解析之后,SqlSessionFactory包括了所有屬性和要執行的SQL sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); reader.close(); }catch (IOException e){ e.printStackTrace(); } } @Test public void testSelectAll(){ //獲取SqlSession SqlSession sqlSession = sqlSessionFactory.openSession(); try{ //通過sqlSession的selectList方法查找到id為selectAll的方法執行sql //執行完后,mybatis將結果集映射為returnType類型并返回 ListuserList = sqlSession.selectList("selectAll"); printUserList(userList); }finally { //關閉資源 sqlSession.close(); } } private void printUserList(List users){ for(SysUser user : users){ System.out.println(user.toString()); } } }
運行測試方法testSelectAll,如無問題將打印如下內容:
... ... 11:11:47.042 [main] DEBUG com.github.dalianghe.mapper.SysUserMapper.selectAll - ==> Preparing: select id,username,password,phone from sys_user 11:11:47.109 [main] DEBUG com.github.dalianghe.mapper.SysUserMapper.selectAll - ==> Parameters: 11:11:47.130 [main] TRACE com.github.dalianghe.mapper.SysUserMapper.selectAll - <== Columns: id, username, password, phone 11:11:47.130 [main] TRACE com.github.dalianghe.mapper.SysUserMapper.selectAll - <== Row: 1, zhangsan, 123456, 13901234567 11:11:47.133 [main] TRACE com.github.dalianghe.mapper.SysUserMapper.selectAll - <== Row: 2, lishi, 123456, 13901234567 11:11:47.133 [main] TRACE com.github.dalianghe.mapper.SysUserMapper.selectAll - <== Row: 3, wangwu, 123456, 13901234567 11:11:47.133 [main] DEBUG com.github.dalianghe.mapper.SysUserMapper.selectAll - <== Total: 3 User[id=1,username=zhangsan,password=123456,phone=13901234567] User[id=2,username=lishi,password=123456,phone=13901234567] User[id=3,username=wangwu,password=123456,phone=13901234567] ... ...總結
本節是第一篇關于mybatis的學習,我們體驗了下mybatis的查詢功能,后續繼續學習更多更強大的功能,自己努力、大家努力。
最后創建了qq群方便大家交流,可掃描加入,同時也可加我qq:276420284,共同學習、共同進步,謝謝!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/71205.html
摘要:是支持普通查詢,存儲過程和高級映射的優秀持久層框架。其中,標簽內指定的是你定義的實體類的別名,方便之后使用。如果有問題會輸出相應的提示。結果根據配置,我們生成了三個文件。 MyBatis 是支持普通 SQL查詢,存儲過程和高級映射的優秀持久層框架。MyBatis 消除了幾乎所有的JDBC代碼和參數的手工設置以及結果集的檢索。MyBatis 使用簡單的 XML或注解用于配置和原始映射,將...
摘要:作為微服務的基礎設施之一,背靠強大的生態社區,支撐技術體系。微服務實踐為系列講座,專題直播節,時長高達小時,包括目前最流行技術,深入源碼分析,授人以漁的方式,幫助初學者深入淺出地掌握,為高階從業人員拋磚引玉。 簡介 目前業界最流行的微服務架構正在或者已被各種規模的互聯網公司廣泛接受和認可,業已成為互聯網開發人員必備技術。無論是互聯網、云計算還是大數據,Java平臺已成為全棧的生態體系,...
閱讀 3078·2021-11-24 09:38
閱讀 1330·2021-09-22 15:27
閱讀 2968·2021-09-10 10:51
閱讀 1504·2021-09-09 09:33
閱讀 917·2021-08-09 13:47
閱讀 2072·2019-08-30 13:05
閱讀 892·2019-08-29 15:15
閱讀 2425·2019-08-29 12:21