SpringBoot整合mybatis的兩種方式

SpringBoot整合mybatis的兩種方式

1、通過配置去整合mybatis

添加依賴
<dependency>
     <groupId>org.mybatis.spring.boot</groupId>
     <artifactId>mybatis-spring-boot-starter</artifactId>
     <version>2.1.1</version>
</dependency>
實現增刪查改的mapper
/**
 * @Auther: ZQB
 * Date:2020/1/6
 */
@Mapper
public interface UserMapper {
    /**
     * 根據用戶 id 查詢
     *
     * @param uid
     * @return :返回查詢結果,不存在時返回 null
     * @Select :等價於以前 xml 形式時的 <select 標籤,sql寫法仍然和以前一樣
     */
    @Select(value = {"select * from user where u_id=#{uid}"})
    public User findUserById(Integer uid);

    /**
     * 查詢所有用戶
     *
     * @return :返回查詢結果
     * @Select :等價於以前 xml 形式時的 <select 標籤,sql寫法仍然和以前一樣
     */
    @Select(value = {"select * from user"})
    public List<User> findAllUsers();

    /**
     * 根據用戶id刪除用戶
     *
     * @return :返回操作的行數,也可以不返回
     */
    @Delete("delete from user where uid = #{uid}")
    public Integer deleteUserById(Integer uid);

    /**
     * 添加用戶
     *
     * @param user :因爲主鍵 uid 自增,所以沒設值
     * @return
     */
    @Insert("insert into user(name,age,birthday,salary) values(#{name},#{age},#{birthday},#{salary})")
    public Integer adduser(User user);

    /**
     * 根據用戶 uid 修改用戶
     *
     * @param user
     * @return
     */
    @Update("update user set name=#{name},age=#{age},birthday=#{birthday},salary=#{salary} where uid=#{uid}")
    public Integer updateUser(User user);

}

通過配置bean修改mybatis的屬性:

/**
 * @Auther: ZQB
 * 自定義Mybatis的配置
 * Date:2020/1/6
 */
@Configuration
public class MyBatisConfig {
    /**
     * 將組建添加到bean的容器當中去
     * @return
     */
    @Bean
    public ConfigurationCustomizer configurationCustomizer(){
        return new ConfigurationCustomizer() {
            @Override
            public void customize(org.apache.ibatis.session.Configuration configuration) {
                configuration.setMapUnderscoreToCamelCase(true);
            }
        };
    }
}

注意:需要對每個mapper接口添加@Mapper,也可以在SpringBoot的啓動類添加mapper的包名:
@MapperScan(value {“com.example.mybatismethods.mapper”}),這樣就可以省略@Mapper註解

2、通過傳統的配置文件整合mybatis

1、需要在resources目錄中創建相應的mapper.xml配置文件,其次要添加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>
    <!--MyBatis 核心配置文件,就是以前的 sqlMapConfig.xml-->
    <!--可從官網獲取本文件頭:http://www.mybatis.org/mybatis-3/getting-started.html-->

    <!-- 文件中的配置都可以從官網獲取:http://www.mybatis.org/mybatis-3/configuration.html#settings-->
    <settings>
        <!-- 開啓駝峯命名,與註解方式的使用的 ConfigurationCustomizer 完全等效-->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <setting name="cacheEnabled" value="true"/>
        <setting name="lazyLoadingEnabled" value="true"/>
        <setting name="multipleResultSetsEnabled" value="true"/>
        <setting name="useColumnLabel" value="true"/>
        <setting name="useGeneratedKeys" value="false"/>
        <setting name="autoMappingBehavior" value="PARTIAL"/>
        <setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
        <setting name="defaultExecutorType" value="SIMPLE"/>
        <setting name="defaultStatementTimeout" value="25"/>
        <setting name="defaultFetchSize" value="100"/>
        <setting name="safeRowBoundsEnabled" value="false"/>
        <setting name="mapUnderscoreToCamelCase" value="false"/>
        <setting name="localCacheScope" value="SESSION"/>
        <setting name="jdbcTypeForNull" value="OTHER"/>
        <setting name="lazyLoadTriggerMethods"
                 value="equals,clone,hashCode,toString"/>
    </settings>
    <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>
        <package name="com.example.mybatismethods.mapper"/>
    </mappers>
</configuration>

PartyMapper.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同樣指向對應的Mapper接口-->
<mapper namespace="com.example.mybatismethods.mapper.PartyMapper">
    <!-- myBatis sql 映射文件,可從官網獲取:http://www.mybatis.org/mybatis-3/getting-started.html-->
    <!-- 和以前一樣對應Mapper接口的方法寫上sql-->

    <!-- 根據 partyId 查詢黨支部,可以不指定 parameterType,會自動根據接口方法的參數進行映射-->
    <select id="findPartyById" resultType="com.example.mybatismethods.domain.Party">
        select * from party where partyId = #{partyId}
    </select>

    <!-- 查詢所有黨支部-->
    <select id="findAllPartys" resultType="com.example.mybatismethods.domain.Party">
        select * from party;
    </select>

    <!-- 根據 partyId 刪除,可以不指定 parameterType,會自動根據接口方法的參數進行映射-->
    <delete id="deletePartyById">
      DELETE FROM party where partyId = #{partyId}
    </delete>

    <!-- 其餘 添加、修改完全與以前 spring 整合 myBatis 一樣,在此不再累述-->
</mapper>

PartyMapper接口
package com.example.mybatismethods.mapper;

import com.example.mybatismethods.domain.Party;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * @Auther: ZQB
 * Date:2020/1/6
 */
public interface PartyMapper {

    Party findPartyById(Integer partyId);
    List<Party> findAllPartys();
    Integer deletePartyById(Integer partyId);

};
發佈了22 篇原創文章 · 獲贊 6 · 訪問量 666
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章