mybatis快速搭建
一、簡介
它是一款半自動的ORM持久層框架,具有較高的SQL靈活性,支援高階對映(一對一,一對多),動態SQL,延遲載入和快取等特性,但它的資料庫無關性較低。
二、資料庫搭建
比如我當前只有id,username,userpwd三個欄位
create database mybatis; use mybatis; create table user( id int NOT NULL primary key AUTO_INCREMENT , username varchar(20) not null, userpwd varchar(20) not null ); insert into user (username,userpwd) values ('user1','admin'); insert into user (username,userpwd) values ('user2','admin');
三、框架搭建
這裡以idea為開發平臺搭建
1、建立專案
首先我們建立一個新的專案,點選new project
選擇Spring,輸入專案名稱、sdk與java版本(相同)、然後next
選擇最基本的mysqlDriver驅動(其他的可以更具自己的需求新增,我這裡只需要最基本的mysql驅動)。
完成後finish即可完成專案的基本新建。
2、匯入依賴
既然要用mybatis,自然就要mybatis的依賴。在https://mvnrepository.com/中搜索
輸入框輸入mybatis,點選搜尋
第一個就是
這裡選擇當前最新的
點選複製下面xml程式碼即可。
這時我們回到idea中。在專案結構中找到pom.xml檔案
在text下面貼上剛才複製的程式碼,然後再點一下右邊的m按鈕(此按鈕是下載依賴)
3、在idea中配置資料庫
根據第一步mysql配置資訊中配置
選擇mysql
這裡注意Driver這裡,如果MySQL版本是8.0一下(包括8.0)選擇MySQL。如果是8.0以上(不包括8.0)選擇MySQL for 5.1。然後依次輸入host、user、password、Database,再然後點選Test Connection測試,通過後點選ok即可。
4、編寫mybatis配置檔案(mybatis-config.xml)
從現在開始按照https://mybatis.net.cn/getting-started.html官方的講解來操作。
在resources中建立一個mybatis-config.xml檔案
輸入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>
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!-- mysql驅動-->
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<!-- mysql地址 (注意&轉義)-->
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8"/>
<!-- mysql賬號-->
<property name="username" value="root"/>
<!-- mysql密碼-->
<property name="password" value="admin"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- 不慌等一下要修改-->
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>
5、建立基本的資料夾結構
在mybatis資料夾下建立基本的mybatis結構結構。
有dao、pojo、Utils
6、建立mybatisUtils核心配置
在Utils資料夾下建立mybatisUtils.java並編寫程式碼
package com.example.mybatis.Utils;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class mybatisUtils {
public static SqlSessionFactory sqlSessionFactory;
static {
try {
String resource = "mybatis-config.xml";
InputStream inputStream;
inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
}
7、建立user實體類
在idea開發工具中在右上角找到豎著寫的Database,選擇mybatis下的user,右鍵找到倒數第二個Scripted Extensions下的POJOs,點選它
找到當前目錄的pojo資料夾,然後點選ok
這時,在我的pojo目錄下就多了個User.java的檔案
這時我們將多餘的程式碼刪除掉
原來的
package com.sample;
public class User {
private long id;
private String username;
private String userpwd;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getUserpwd() {
return userpwd;
}
public void setUserpwd(String userpwd) {
this.userpwd = userpwd;
}
}
刪除後的
package com.example.mybatis.pojo;
public class User {
private long id;
private String username;
private String userpwd;
}
現在我們批量匯入無參構造、get、set、tostring四個方法(IDEA快捷鍵Alt+ins)
無參
get 和 set
tostring
這樣實體類就建立完成了。
package com.example.mybatis.pojo;
public class User {
private long id;
private String username;
private String userpwd;
public User() {
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getUserpwd() {
return userpwd;
}
public void setUserpwd(String userpwd) {
this.userpwd = userpwd;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", userpwd='" + userpwd + '\'' +
'}';
}
}
8、建立userdao.java
在dao目錄下建立userdao.java(注意這裡選擇interface介面)
編寫程式碼
package com.example.mybatis.dao;
import com.example.mybatis.pojo.User;
import java.util.List;
public interface userdao {
// 遍歷所有使用者
List<User> userList();
}
9、建立userdao.xml
在dao目錄下建立userdao.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">
<!-- namespace(名稱空間)為userdao.java的路徑-->
<mapper namespace="com.example.mybatis.dao.userdao">
<!-- id為userdai.java的方法名,resultType為pojo中user的實體類-->
<select resultType="com.example.mybatis.pojo.User">
-- sql語句
select * from user;
</select>
</mapper>
10、修改剛剛配置的mybatis-config.xml配置檔案
開啟剛才編寫的mybatis-config.xml檔案
修改剛才註名的mapper,將resource修改為剛才設定userdao.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>
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!-- mysql驅動-->
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<!-- mysql地址 (注意&轉義)-->
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8"/>
<!-- mysql賬號-->
<property name="username" value="root"/>
<!-- mysql密碼-->
<property name="password" value="admin"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- usedao.xml的路徑-->
<mapper resource="com/example/mybatis/dao/userdao.xml"/>
</mappers>
</configuration>
11、解決maven靜態資源過濾的問題
找到pom.xml檔案,在build中新增一段程式碼
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
全部
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.4</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>mybatis</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>mybatis</name>
<description>mybatis</description>
<properties>
<java.version>11</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.9</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
</project>
12、編寫測試類
在src/test/java/com/example/mybatis中找到MybatisApplicationTests.java檔案並編寫程式碼
package com.example.mybatis;
import com.example.mybatis.Utils.mybatisUtils;
import com.example.mybatis.dao.userdao;
import com.example.mybatis.pojo.User;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class MybatisApplicationTests {
@Test
void contextLoads() {
SqlSessionFactory sqlSessionFactory = mybatisUtils.sqlSessionFactory;
SqlSession sqlSession = sqlSessionFactory.openSession();
userdao mapper = sqlSession.getMapper(userdao.class);
for (User user : mapper.userList()) {
System.out.println(user);
}
sqlSession.close();
}
}
13、執行測試程式碼
在剛才編寫的測試類的右邊應該有一個開始播放的按鈕,點選它即可執行。
最後執行結果
以上是最基本的mybatis的使用方法,其他sql語句使用原理大致相同。實際使用可以考慮加入druid連線池混合使用。