游戲代理靠譜嗎百度搜索引擎關(guān)鍵詞優(yōu)化
Mybatis快速入門
- 一、Mybatis簡(jiǎn)介
- 1.1Mybatis簡(jiǎn)化JDBC
- 二、Mybatis快速入門
- 2.1創(chuàng)建user表,添加數(shù)據(jù)
- 2.2創(chuàng)建模塊,導(dǎo)入坐標(biāo)
- 2.3編寫Mybatis核心配置文件 --> 替換連接信息,解決硬編碼問(wèn)題
- 2.4編寫SQL映射文件 --> 統(tǒng)一管理sql語(yǔ)句,解決硬編碼問(wèn)題
- 2.5編碼
- 2.5.1定義pojo類
- 2.5.2加載核心配置文件,獲取SqlSessionFactory對(duì)象
- 2.5.3獲取SqlSession對(duì)象,執(zhí)行SQL語(yǔ)句
- 總結(jié)
一、Mybatis簡(jiǎn)介
1.1Mybatis簡(jiǎn)化JDBC
簡(jiǎn)介:
- Mybatis是一款優(yōu)秀的持久層框架,用于簡(jiǎn)化JDBC開(kāi)發(fā)
- Mybatis本是Apache的一個(gè)開(kāi)源項(xiàng)目iBatis,2010年這個(gè)項(xiàng)目由apache software foundation 遷移到了gppgle code,并且改名為Mybatis。2013年11月遷移到Github
- 官網(wǎng):https://mybatis.org/mybatis-3/zh/index.html
- 持久層:
-
- 負(fù)責(zé)將數(shù)據(jù)保存到數(shù)據(jù)庫(kù)的那一層代碼
-
- JavaEE三層架構(gòu):表現(xiàn)層、業(yè)務(wù)層、持久層
- 框架:
-
- 框架就是一個(gè)半成品軟件,是一套可重用的、通用的、軟件基礎(chǔ)代碼模型
-
- 在框架的基礎(chǔ)之上構(gòu)建軟件編寫更加高效、規(guī)范、通用、可擴(kuò)展
JDBC缺點(diǎn):
- 1.硬編碼
-
- 注冊(cè)驅(qū)動(dòng),獲取連接
-
- SQL語(yǔ)句
- 2.操作繁瑣
-
- 手動(dòng)設(shè)置參數(shù)
-
- 手動(dòng)封裝結(jié)果集
Mybatis簡(jiǎn)化JDBC
- 配置文件
-
- Mybatis將一些注冊(cè)驅(qū)動(dòng)的步驟寫入配置文件中,將來(lái)直接讀取配置文件里的信息就可以了
-
- SQL語(yǔ)句也是直接被抽取到配置文件中,在對(duì)應(yīng)的配置文件中直接寫SQL語(yǔ)句即可
-
- 參數(shù)封裝通過(guò)映射的關(guān)系,就可以將結(jié)果封裝起來(lái),在調(diào)用時(shí)只需調(diào)用該映射中的方法直接使用。
Mybatis免除了幾乎所有的JDBC代碼以及設(shè)置參數(shù)和結(jié)果集的工作。
二、Mybatis快速入門
需求:查詢user表中所有數(shù)據(jù)
- 1.創(chuàng)建user表,添加數(shù)據(jù)
- 2.創(chuàng)建模塊,導(dǎo)入坐標(biāo)
- 3.編寫Mybatis核心配置文件 --> 替換連接信息,解決硬編碼問(wèn)題
- 4.編寫SQL映射文件 --> 統(tǒng)一管理sql語(yǔ)句,解決硬編碼問(wèn)題
- 5.編碼
-
- 1.定義pojo類
-
- 2.加載核心配置文件,獲取SqlSessionFactory對(duì)象
-
- 3.獲取SqlSession對(duì)象,執(zhí)行SQL語(yǔ)句
-
- 4.釋放資源
2.1創(chuàng)建user表,添加數(shù)據(jù)
- 在對(duì)應(yīng)的mysql數(shù)據(jù)庫(kù)中,先創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)
mybatis
,再建一個(gè)表,表名為tb_user
,創(chuàng)建代碼如下:
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, 'zhangsan', '123', '男', '北京');
INSERT INTO tb_user VALUES (2, '李四', '234', '女', '天津');
INSERT INTO tb_user VALUES (3, '王五', '11', '男', '西安');
2.2創(chuàng)建模塊,導(dǎo)入坐標(biāo)
- 1.創(chuàng)建一個(gè)Maven的項(xiàng)目
- 1.1點(diǎn)擊File->NEW->Project
- 1.2.選擇Maven->NEXT
- 1.3.在NAME中輸入項(xiàng)目名稱,點(diǎn)擊Finish就創(chuàng)建好了
- 2配置
pom.xml
內(nèi)的坐標(biāo) - 2.1根據(jù)mybatis官網(wǎng)上的步驟,需要將mybatis的依賴導(dǎo)入到
pom.xml
文件中,即如下代碼:
<!--mybatis 依賴--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.13</version></dependency>
- 2.2要連接數(shù)據(jù)庫(kù),就需要導(dǎo)入mysql驅(qū)動(dòng):
<!-- mysql 驅(qū)動(dòng) --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.32</version></dependency>
- 2.3單元測(cè)試:
<!-- junit單元測(cè)試 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13</version><scope>test</scope></dependency>
- 2.4為了觀察方便,可以添加一些日志的依賴:
<!-- 添加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>
- 再導(dǎo)入日志依賴的同時(shí),還需要引入一個(gè)配置文件
logback.xml
將它放在resources
目錄下,內(nèi)容如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration><!--CONSOLE :表示當(dāng)前的日志信息是可以輸出到控制臺(tái)的。--><appender name="Console" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>[%level] %blue(%d{HH:mm:ss.SSS}) %cyan([%thread]) %boldGreen(%logger{15}) - %msg %n</pattern></encoder></appender><logger name="com.practice" level="DEBUG" additivity="false"><appender-ref ref="Console"/></logger><!--level:用來(lái)設(shè)置打印級(jí)別,大小寫無(wú)關(guān):TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF, 默認(rèn)debug<root>可以包含零個(gè)或多個(gè)<appender-ref>元素,標(biāo)識(shí)這個(gè)輸出位置將會(huì)被本日志級(jí)別控制。--><root level="DEBUG"><appender-ref ref="Console"/></root>
</configuration>
2.3編寫Mybatis核心配置文件 --> 替換連接信息,解決硬編碼問(wèn)題
- 根據(jù)mybatis官網(wǎng)的提示,編寫Mybatis核心配置文件需要配置一個(gè)xml文件,將此xml文件同樣建立在
resources
目錄下,文件中的內(nèi)容在官網(wǎng)中的示例如下,我們需要修改其中的內(nèi)容:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="${driver}"/><property name="url" value="${url}"/><property name="username" value="${username}"/><property name="password" value="${password}"/></dataSource></environment></environments><mappers><mapper resource="org/mybatis/example/BlogMapper.xml"/></mappers>
</configuration>
-
- 1.修改
value="${driver}"
中value
的值為"com.mysql.jdbc.Driver"
- 1.修改
-
- 2.修改
value="${url}"
中value
的值為"jdbc:mysql:///數(shù)據(jù)庫(kù)名?useSSL=false"
,注意,這里一定要仔細(xì)輸入,寫錯(cuò)任何一個(gè)字符都有可能運(yùn)行失敗
- 2.修改
-
- 3.修改
value="${username}"
中value
的值為自己數(shù)據(jù)庫(kù)的登錄名(一般為root
)
- 3.修改
-
- 4.修改
value="${password}"
中value
的值為自己數(shù)據(jù)庫(kù)的登錄密碼
- 4.修改
-
resource="org/mybatis/example/BlogMapper.xml"
的值為對(duì)應(yīng)的sql的映射文件,之后我們?cè)倩貋?lái)修改
2.4編寫SQL映射文件 --> 統(tǒng)一管理sql語(yǔ)句,解決硬編碼問(wèn)題
- 編寫SQL映射文件,我們?nèi)∶麨?code>UserMapper.xml,添加到
resources
目錄下,官網(wǎng)提供如下寫法:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.mybatis.example.BlogMapper"><select id="selectBlog" resultType="Blog">select * from Blog where id = #{id}</select>
</mapper>
-
- 1.其中
namespace
為命名空間,作為sql映射的唯一標(biāo)識(shí),在這里我們?nèi)∶麨?code>test
- 1.其中
-
- 2.這里
select
表示的是查詢的sql,對(duì)應(yīng)還有添加、修改、刪除等的寫法,這里我們用的是查詢,id可以定義為id="selectAll"
- 2.這里
-
- 3.
resultType
表示返回值的類型,這里由于我們要查找tb_user表中的全部數(shù)據(jù),所以返回的可以是一個(gè)User集合,即resultType="com.practice.pojo.User"
,關(guān)于"com.practice.pojo.User"
在下面定義pojo類中講解
- 3.
-
- 4.編寫sql語(yǔ)句,直接在
select * from Blog where id = #{id}
位置寫入sql語(yǔ)句select * from tb_user;
即可
- 4.編寫sql語(yǔ)句,直接在
- 此文件配置好后,上一步的映射文件就可以修改了,即
resource="UserMapper.xml"
2.5編碼
2.5.1定義pojo類
- 這個(gè)類的路徑在上面編寫SQL映射文件中寫過(guò),就是
"com.practice.pojo.User"
,是在src.main.java
目錄中的,最后的java文件User.java
中與對(duì)應(yīng)mysql數(shù)據(jù)庫(kù)的tb_user
表的字段值相同,只是將它們以java類的方式封裝了起來(lái),對(duì)應(yīng)如下代碼:
package com.practice.pojo;/*** @Author YJ* @Date 2023/7/24 10:47* Description:User*/
public class User {private Integer id;private String userName;private String password;private String gender;private String addr;public User() {}public User(Integer id, String userName, String password, String gender, String addr) {this.id = id;this.userName = userName;this.password = password;this.gender = gender;this.addr = addr;}/*** 獲取** @return id*/public Integer getId() {return id;}/*** 設(shè)置** @param id*/public void setId(Integer id) {this.id = id;}/*** 獲取** @return userName*/public String getUserName() {return userName;}/*** 設(shè)置** @param userName*/public void setUserName(String userName) {this.userName = userName;}/*** 獲取** @return password*/public String getPassword() {return password;}/*** 設(shè)置** @param password*/public void setPassword(String password) {this.password = password;}/*** 獲取** @return gender*/public String getGender() {return gender;}/*** 設(shè)置** @param gender*/public void setGender(String gender) {this.gender = gender;}/*** 獲取** @return addr*/public String getAddr() {return addr;}/*** 設(shè)置** @param addr*/public void setAddr(String addr) {this.addr = addr;}public String toString() {return "User{id = " + id + ", userName = " + userName + ", password = " + password + ", gender = " + gender + ", addr = " + addr + "}";}
}
2.5.2加載核心配置文件,獲取SqlSessionFactory對(duì)象
- 同樣在
src.main.java
下創(chuàng)建一個(gè)測(cè)試類取名為(隨意的)MybatisDemo.java
,放在com.practice
包下 -
- 1.加載mybatis的核心配置文件,獲取SqlSessionFactory,可以參考官網(wǎng):
String resource = "org/mybatis/example/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
-
resource
的值就是之前配置的mybatis文件"mybatis-config.xml"
- 2.獲取SqlSession對(duì)象,執(zhí)行SQL
SqlSession sqlSession = sqlSessionFactory.openSession();
2.5.3獲取SqlSession對(duì)象,執(zhí)行SQL語(yǔ)句
- 1.執(zhí)行sql語(yǔ)句并打印結(jié)果
//這里就是調(diào)用的`UserMapper.xml`中的sql語(yǔ)句,通過(guò)test查找到selectAll執(zhí)行sql語(yǔ)句
List<Object> users = sqlSession.selectList("test.selectAll");
System.out.println(users);
- 2.釋放資源
sqlSession.close();
- 最后結(jié)果如下
- 完整的測(cè)試代碼如下:
package com.practice;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 java.io.IOException;
import java.io.InputStream;
import java.util.List;/*** @Author YJ* @Date 2023/7/24 10:53* Description:Mybatis快速入門*/
public class MybatisDemo {public static void main(String[] args) throws IOException {//1.加載mybatis的核心配置文件,獲取SqlSessionFactoryString resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//2.獲取SqlSession對(duì)象,執(zhí)行SQLSqlSession sqlSession = sqlSessionFactory.openSession();//3.執(zhí)行sql語(yǔ)句List<Object> users = sqlSession.selectList("test.selectAll");System.out.println(users);//4.釋放資源sqlSession.close();}}
總結(jié)
通過(guò)這篇文章,我們可以對(duì)Mybatis有了基本的認(rèn)識(shí),并能初步掌握Mybatis的用法與特性,歡迎各位小伙伴三連+關(guān)注!!!