1. 程式人生 > >Spring Boot 整合之Mybatis

Spring Boot 整合之Mybatis

1.引入Mybatis、MySQL依賴

注意:這裡不引入spring-boot-starter-jdbc依賴,是由於mybatis-spring-boot-starter中已經包含了此依賴。

        <!-- springboot,mybatis 整合包 -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>

        <!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.46</version>
        </dependency>

MyBatis-Spring-Boot-Starter依賴將會提供如下:

  1. 自動檢測現有的DataSource。
  2. 將建立並註冊SqlSessionFactory的例項,該例項使用SqlSessionFactoryBean將該DataSource作為輸入進行傳遞。
  3. 將建立並註冊從SqlSessionFactory中獲取的SqlSessionTemplate的例項。
  4. 自動掃描您的mappers,將它們連結到SqlSessionTemplate並將其註冊到Spring上下文,以便將它們注入到您的bean中。

 

就是說,使用了該Starter之後,只需要定義一個DataSource即可(application.properties中可配置),它會自動建立使用該DataSource的SqlSessionFactoryBean以及SqlSessionTemplate。會自動掃描你的Mappers,連線到SqlSessionTemplate,並註冊到Spring上下文中。

2.配置資料庫連線:

在 application.properties 中新增:

#資料連線
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root123

# mybatis 配置
mybatis.config-location=classpath:mybatis/mybatis-config.xml
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml

3.在 src/main/resources 下建立 mybatis 資料夾,並在 mybatis 資料夾中建立 "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>
    <settings>
        <!-- 獲取資料庫自增主鍵值 -->
        <setting name="useGeneratedKeys" value="true"/>
        <!-- 使用列別名替換列名,預設為 true -->
        <setting name="useColumnLabel" value="true"/>
        <!-- 開啟駝峰命名轉換:Table(create_time) => Entity(createTime) -->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
</configuration>

mybatis 資料夾下再建立一個 "mapper" 資料夾,裡邊存放 Mpper 介面對應的 mapper 對映檔案。

4.測試

4.1建表

CREATE TABLE t_user(
u_id INT PRIMARY KEY auto_increment COMMENT "ID",
u_name VARCHAR(20) NOT NULL COMMENT "使用者姓名"
)COMMENT="使用者"

4.2實體類

package club.lygangdai.pojo;

public class User {
    private Integer uId;
    private String uName;

}

此處省略setter和getter

4.3Mapper介面

package club.lygangdai.dao;

import club.lygangdai.pojo.User;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface UserDao {

    int insertUser(User user);

    User getUserById(Integer uid);

    int updateUser(User user);

    int deleteUserById(Integer uid);
}

Mapper 介面需要新增 @Mapper 註解,如果不想使用該註解,可以在啟動類上使用 @MapperScan 配置 Mapper 介面路徑

@SpringBootApplication
@MapperScan("club.lygangdai.dao")
public class SpringbootMybatisJspApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootMybatisJspApplication.class, args);
    }
}

mybatis/mapper/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="club.lygangdai.dao.UserDao">

    <insert id="insertUser" parameterType="club.lygangdai.pojo.User">
        insert into t_user(u_name) values(#{uName})
    </insert>

    <select id="getUserById" parameterType="java.lang.Integer" resultType="club.lygangdai.pojo.User">
        select u_id,u_name from t_user where u_id = #{uId}
    </select>

    <update id="updateUser" parameterType="club.lygangdai.pojo.User">
        update t_user set u_name = #{uName} where u_id = #{uId}
    </update>

    <delete id="deleteById" parameterType="java.lang.Integer">
        delete from t_user where u_id = #{uId}
    </delete>

</mapper>

4.4測試

4.4.1建立controller

@Controller
@RequestMapping("user")
public class UserController {

    @Resource
    private UserDao userDao;

    @RequestMapping(value = "getUser",produces="text/html;charset=UTF-8")
    @ResponseBody
    public User getUser(){
        User user = userDao.getUserById(1);
        return user;
    }
}

注:返回的是json格式,我之前已做配置

轉json請看https://blog.csdn.net/qq_40369944/article/details/83898752

資料庫新增一條預設資料

查詢結果: