您好,登錄后才能下訂單哦!
這篇文章主要講解了“Java中MyBatis的快速入門實(shí)例代碼分析”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Java中MyBatis的快速入門實(shí)例代碼分析”吧!
簡單來說,MyBatis是一款優(yōu)秀的持久層框架,用于簡化JDBC開發(fā)
。MyBatis本身是Apache的一個開源項(xiàng)目,期初叫做iBatis,2010年這個項(xiàng)目前移到google code,并改名為MyBatista。在2013年該項(xiàng)目遷移到GitHub。
概念中的持久層怎么理解?指將數(shù)據(jù)保存到數(shù)據(jù)庫的那一層代碼。在海量的代碼中,為了保證每一塊代碼的職責(zé)單一,把同數(shù)據(jù)庫操作的代碼叫做持久層
。同時,JavaEE三層架構(gòu)中,表現(xiàn)層
負(fù)責(zé)頁面的展示,業(yè)務(wù)層
負(fù)責(zé)邏輯的處理,而持久層就是負(fù)責(zé)將數(shù)據(jù)存儲到數(shù)據(jù)庫中。
什么是框架?框架是指一個半成品的軟件
,是一套可重用的,通用的,軟件基礎(chǔ)代碼模型,同時,在框架基礎(chǔ)之上進(jìn)行開發(fā)大量的節(jié)省了成本,而且更加的規(guī)范,通用且擴(kuò)展性較強(qiáng)。
既然我們使用MyBatis來簡化JDBC開發(fā),那么JDBC究竟存在什么缺點(diǎn)呢?
首先在注冊驅(qū)動,獲取鏈接的時候,字符串信息如果發(fā)生變動,例如密碼,此時需要手動修改。其次,在定義sql語句時候,使用字符串同樣使得代碼的維護(hù)性變差。
當(dāng)我們手動設(shè)置參數(shù)和手動設(shè)置結(jié)果集時,存在著操作繁瑣的問題。
下面JDBC使用的一段代碼做展示:
既然JDBC開發(fā)存在硬編碼,操作繁瑣的缺點(diǎn),那么怎么解決這些問題呢?首先我們把字符串寫到單獨(dú)的配置文件中,解決JDBC硬編碼的問題,其次,可以采用一種方法來自動完成JDBC操作繁瑣的代碼。于是,我們使用MyBatis來簡化JDBC開發(fā)。MyBatis免除了幾乎所有的JDBC代碼以及設(shè)置參數(shù)和獲取結(jié)果集的工作。
例如:在配置文件中寫入?yún)?shù)信息,將來使用時直接讀取,解決硬編碼的問題
<environment id="test"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <!--數(shù)據(jù)庫連接信息--> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql:///mybatis?useSSL=false"/> <property name="username" value="root"/> <property name="password" value="1234"/> </dataSource> </environment> </environments>
市面上的持久層框架有很多的選擇,但是MyBatis在國內(nèi)市場有很大的使用占比。
我們通過實(shí)踐操作快速查詢user表中所有的數(shù)據(jù)來入門MyBatis,即查詢user表中的數(shù)據(jù),放到user對象里,在分別把對方放入集合中完成操作。通過以下步驟來完成操作:
創(chuàng)建user表,添加數(shù)據(jù)
創(chuàng)建模塊,導(dǎo)入坐標(biāo)
編寫MyBatis 核心配置文件,替換連接信息來解決硬編碼的問題
編寫SQL映射文件,統(tǒng)一管理sql語句,解決編碼問題
編寫代碼
在編寫代碼是使用以下步驟:
定義POJO類
加載核心配置文件,獲取sqlSessionFactory對象
獲取sqlSession對象,執(zhí)行sql語句
釋放資源
整體的項(xiàng)目結(jié)構(gòu)展示:
下面演示通過詳細(xì)的演示,快速入門MyBatis:
創(chuàng)建user表,添加數(shù)據(jù):
create database mybatis; use mybatis; drop table if exists tb_user; create table tb_user( id int primary key auto_increment, username varchar(20), password varchar(20), gender char(1), addr varchar(30) ); INSERT INTO tb_user VALUES (1, '小張', 'abc', '男', '北京'); INSERT INTO tb_user VALUES (2, '小李', '123', '女', '天津'); INSERT INTO tb_user VALUES (3, '小美', '456', '女', '上海');
這里使用的是MySQL數(shù)據(jù)庫,使用navicat作為數(shù)據(jù)庫的可視化工具。
在idea中創(chuàng)建模塊,導(dǎo)入坐標(biāo):
在idea中點(diǎn)擊新建項(xiàng)目,構(gòu)建系統(tǒng)選擇Maven,輸入項(xiàng)目名稱(這里使用MyBatis-demo),設(shè)置組ID和工件ID,點(diǎn)擊創(chuàng)建。接下來導(dǎo)入的依賴,將下面的依賴代碼置于 pom.xml 文件中:
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>x.x.x</version> </dependency>
接下來導(dǎo)入mysql依賴,junit坐標(biāo)和logback坐標(biāo),把logback.xml配置文件粘貼到resources中:
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13</version> <scope>test</scope> </dependency> <!-- 添加slf4j日志api --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.20</version> </dependency> <!-- 添加logback-classic依賴 --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency> <!-- 添加logback-core依賴 --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.2.3</version> </dependency>
編寫MyBatis 核心配置文件:
在MyBatis-demo/src/main/resources中新建配置文件mybatis.config.xml。
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <!--數(shù)據(jù)庫連接信息--> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql:///mybatis?useSSL=false"/> <property name="username" value="root"/> <property name="password" value="abc123"/> </dataSource> </environment> </environments> <mappers> <!--加載sql的映射文件--> <mapper resource="UerMapper.xml"/> </mappers> </configuration>
編寫SQL映射文件:
在MyBatis-demo/src/main/resources中添加sql的映射文件UserMapper.xml。
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="test"> <select id="selectAll" resultType="com.example.pojo.User"> select * from tb_user; </select> </mapper>
修改MyBatis的核心配置文件,用于加載sql的映射文件。
<mappers> <!--加載sql的映射文件--> <mapper resource="UserMapper.xml"/> </mappers>
完成以上操作就可以進(jìn)行編碼了,首先要定義POJO類:
package com.example.pojo; public class User { private Integer id; private String username; private String password; private String gender; private String addr; public Integer getId() { return id; } public String getUsername() { return username; } public String getPassword() { return password; } public String getGender() { return gender; } public String getAddr() { return addr; } @Override public String toString() { return "User{" + "id=" + id + ", username='" + username + '\'' + ", gender='" + gender + '\'' + ", addr='" + addr + '\'' + '}'; } }
加載核心配置文件,獲取sqlSessionFactory對象:
首先需要創(chuàng)建一個MyBatisDemo.java文件,添加一個主方法,編寫代碼。
public class MyBatisDemo { public static void main(String[] args) throws IOException { //加載MyBatis核心配置文件 String resource = "mybatis.config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } }
獲取sqlSession對象,執(zhí)行sql語句:
//獲取SqlSession對象,用它來執(zhí)行sql SqlSession sqlSession=sqlSessionFactory.openSession(); //執(zhí)行sql List<User> users = sqlSession.selectList("test.selectALL"); System.out.println(users); //釋放資源 sqlSession.close();
到這里我們就完成了整個項(xiàng)目的構(gòu)建,接下來我們運(yùn)行程序,可以看到,我們成功的查詢到tb_user
中的數(shù)據(jù)!
感謝各位的閱讀,以上就是“Java中MyBatis的快速入門實(shí)例代碼分析”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Java中MyBatis的快速入門實(shí)例代碼分析這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。