1. 程式人生 > 實用技巧 >Mybatis學習01--環境搭建和第一個程式

Mybatis學習01--環境搭建和第一個程式

簡介

MyBatis 是一款優秀的持久層框架,它支援自定義 SQL、儲存過程以及高階對映。MyBatis 免除了幾乎所有的 JDBC 程式碼以及設定引數和獲取結果集的工作。MyBatis 可以通過簡單的 XML 或註解來配置和對映原始型別、介面和 Java POJO(Plain Old Java Objects,普通老式 Java 物件)為資料庫中的記錄。

官網:https://mybatis.org/mybatis-3/zh/getting-started.html

環境搭建

MySQL

https://www.mysql.com/

MySQL安裝目錄下 my.ini 檔案

[mysqld]
#設定3306埠號
port=3306
#設定MySQL的安裝目錄
basedir=D:\MySQL\mysql-8.0.22-winx64\mysql-8.0.22-winx64
#設定MySQL資料庫的資料存放目錄
datadir=D:\MySQL\mysql-8.0.22-winx64\mysql-8.0.22-winx64\data
#執行最大連線數
max_connections=200
#執行連線失敗的次數。這也是為了防止有人從該主機試圖攻擊資料庫系統
max_connect_errors=10
#服務端使用的字符集預設為utf-8
character-set-server=utf8
#設定時區
default-time_zone='+08:00'

[mysql]
#客戶端使用的字符集預設為utf8
default-character-set=utf8
[client]
#客戶端預設埠號為3306
port=3306

新增環境變數

安裝

mysqld --install

初始化

mysqld --initialize-insecure --user=mysql

登入

mysql -uroot -p

修改密碼

ALTER USER 'root'@'localhost' IDENTIFIED BY '新密碼';

重新整理許可權

flush privileges;

重啟

net stop mysql
net start mysql

SQLyog 資料庫視覺化工具

https://sqlyog.en.softonic.com/download

Mybatis

maven新增依賴 pom.xml檔案中:

<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>x.x.x</version>
</dependency>

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">
        <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>

第一個程式

建立資料庫


從SqlSessionFactory中獲取SqlSession
public class MybatisUtil {

    private static SqlSessionFactory sqlSessionFactory;

    static {
        try {
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    //獲取SqlSession連線
    public static SqlSession getSession() {
        return sqlSessionFactory.openSession();
    }
}

利用SqlSession完成查詢操作
        SqlSession session= MybatisUtil.getSession();
        UserMapper mapper=session.getMapper(UserMapper.class);
        List<User>  users=mapper.selectUser();

SQL查詢是如何實現的呢?我們來看mybatis-config.xml檔案,XML 配置檔案中包含了對 MyBatis 系統的核心設定,包括獲取資料庫連線例項的資料來源(DataSource)以及決定事務作用域和控制方式的事務管理器(TransactionManager)。

<?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">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&amp;characterEncoding=utf8"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="UserMapper.xml"/>
    </mappers>
</configuration>

mappers 元素則包含了一組對映器(mapper),這些對映器的 XML 對映檔案包含了 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="com.tang.UserMapper">
    <select id="selectUser" resultType="com.tang.User">
    select * from user
  </select>
</mapper>

名稱空間namespace將對映器的xml檔案和介面繫結,在xml檔案中可以定義sql語句,注意select id要與繫結的介面的方法一一對應

public interface UserMapper {
    public List<User> selectUser();
}
出現的問題

程式報錯:Could not find resource UserMapper.xml 找不到對映器資原始檔

原因:

  • 路徑不正確

  • maven靜態資源過濾問題,在pom.xml新增:

    <build>
            <resources>
                <resource>
                    <directory>src/main/java</directory>
                    <includes>
                        <include>**/*.properties</include>
                        <include>**/*.xml</include>
                    </includes>
                    <filtering>false</filtering>
                </resource>
                <resource>
                    <directory>src/main/resources</directory>
                    <includes>
                        <include>**/*.properties</include>
                        <include>**/*.xml</include>
                    </includes>
                    <filtering>false</filtering>
                </resource>
            </resources>
    </build>
    

參考:
https://blog.csdn.net/qq_33369905/article/details/106647283