一、MyBatis是什么
MyBatis 是一個持久層框架,簡化JDBC開發,它提供了一個從 Java 應用程序到 SQL 數據庫的橋梁,用于數據的存儲、檢索和映射。MyBatis 支持基本的 SQL 操作、高級映射特性以及與 Maven 等構建工具的集成。
二、持久層是什么
負責將數據保存到數據庫的那一層代碼。
是JavaEE的三層架構:表現層、業務層、持久層。
三、框架又是什么
框架就是一個半成品軟件,是一套可重用的、通用的、軟件基礎代碼模型。
在框架的基礎之上構建軟件編寫更加高效、規范、通用、可拓展。
四、MyBatis 的好處:
- SQL 靈活性:允許開發者編寫自由的 SQL,適合復雜的查詢。
- 性能優勢:直接執行 SQL,通常性能更優。
- 易于上手:相對于全 ORM 框架,MyBatis 學習成本較低。
- 緩存機制:有效提高數據訪問速度。
- 可擴展性:插件系統允許自定義擴展。
五、MyBatis 的壞處:
- 配置復雜性:需要手動編寫和維護 XML 映射文件。
- SQL 維護:對于大型項目,SQL 語句分散在 XML 中可能導致維護困難。
六、練習:使用Mybatis查詢user表中所有數據
最基礎的簡單練習,簡單熟悉一下Mybatis
以下代碼有點多,注釋里有難點的相應解釋
1.sql創建user表,添加數據
先創建一個數據庫表,表名就叫Mybatis,一會就是要操作這張表
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.idea中創建模塊,導入坐標
創建Model,在自動生成的pom.xml文件中加入以下坐標,完整代碼如下:?
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>mybatis-demo</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!--mybatis的依賴--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.5</version></dependency><!--mysql數據庫--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.46</version></dependency><!--junit單元測試--><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></dependencies></project>
3.編寫 MyBatis 核心配置文件 -->替換連接信息 解決硬編碼問題
創建mybatis-config文件
官網提供的文件的實例代碼,直接粘貼進去
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//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"><!--數據庫連接信息--><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="123456"/></dataSource></environment></environments><mappers><!--加載sql的映射文件的路徑,這里這個路徑做到這里還沒有,回頭再添加的--><!--resources屬性自動會從類的根路徑下開始查找資源--><mapper resource="UserMapper.xml"/></mappers>
</configuration>
4.編寫 SQL映射文件-->統一管理sq|語句,解決硬編碼問題
創建UserMapper.xml,sql表有的會暫時報錯,沒有影響,下面會提供解決方法,test報錯是數據庫軟件的問題,也沒有影響,不用管
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!--namespace:名稱空間-->
<mapper namespace="test"><select id="selectAll" resultType="com.yufei.pojo.User">select * from tb_user;</select>
</mapper>
5. 編碼
????????????????1.定義POJO類
(創建user類,getset、tostring方法)
package com.yufei.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 void setId(Integer id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public String getAddr() {return addr;}public void setAddr(String addr) {this.addr = addr;}@Overridepublic String toString() {return "User{" +"id=" + id +", username='" + username + '\'' +", password='" + password + '\'' +", gender='" + gender + '\'' +", addr='" + addr + '\'' +'}';}
}
? ? ? ? ? ? ? ?234步在MybatisDemo類中編寫
????????????????2.加載核心配置文件,獲取SqlSessionFactory對象
//1.加載Mybatis核心配置文件,獲取SqlSessionFactoryString resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
????????????????3.獲取SqlSession對象,執行SQL語句
//2.獲取SqlSession對象,用它來執行sql語句SqlSession sqlSession = sqlSessionFactory.openSession();//3.執行sqlList<User> users = sqlSession.selectList("test.selectAll");System.out.println(users);
????????????????4. 釋放資源
//4.釋放資源sqlSession.close();
6.最后在resources中加入logback.xml配置文件
保存好了,用到直接復制粘貼
<?xml version="1.0" encoding="UTF-8"?>
<configuration><!--CONSOLE :表示當前的日志信息是可以輸出到控制臺的。--><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.yufei" level="DEBUG" additivity="false"><appender-ref ref="Console"/></logger><!--level:用來設置打印級別,大小寫無關:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF, 默認debug<root>可以包含零個或多個<appender-ref>元素,標識這個輸出位置將會被本日志級別控制。--><root level="DEBUG"><appender-ref ref="Console"/></root>
</configuration>
全部編寫完成的包,別有落下的,一共五個。
運行,成功獲取到數據庫中的數據
七、在IDEA中配置Mysql的數據庫連接(sql文件報錯的原因)
連接成功,在IDEA中就可以查看數據庫!