1. 程式人生 > 其它 >mybatis快速搭建

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地址 (注意&amp;轉義)-->
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&amp;useUnicode=true&amp;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地址 (注意&amp;轉義)-->
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&amp;useUnicode=true&amp;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連線池混合使用。