1. 程式人生 > 其它 >Spring整合MyBatis配置

Spring整合MyBatis配置

技術標籤:JAVA學習筆記

查詢依賴版本的網站:Maven Repository

需要新增的依賴

        <!--連線MySQL-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.21</version>
        </dependency>
<!--MyBatis依賴--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.5</version> </dependency> <!--Spring整合MyBatis依賴--> <dependency
>
<groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>2.0.1</version> </dependency> <!--Druid連線池依賴--> <dependency> <groupId>com.alibaba</groupId
>
<artifactId>druid</artifactId> <version>1.1.21</version> </dependency> <!--資料庫事務依賴--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.2.10.RELEASE</version> </dependency>

配置檔案

  1. resources資料夾中建立jdbc.properties檔案,基本內容如下
jdbc.url=jdbc:mysql://127.0.0.1:3306/databaseName?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false
jdbc.username=root	
jdbc.password=123456
  1. 建立databaseConfig.xml檔案
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       https://www.springframework.org/schema/context/spring-context.xsd">
    <!--jdbc檔案地址-->
    <context:property-placeholder location="classpath:conf/jdbc.properties"/>
    <!--宣告資料來源,連線資料庫-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
        <!--配置資料庫資訊-->
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>
    <!--宣告MyBatis中提供的SqlSessionFactoryBean,用於建立SqlSessionFactory-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--引用注入,將資料庫連線池賦值給dataSource-->
        <property name="dataSource" ref="dataSource"/>
        <!--MyBatis主配置檔案位置,configLocation為Resource型別,讀取配置檔案-->
        <property name="configLocation" value="classpath:conf/mybatis.xml"/>
        <!--用於指定mapper.xml檔案的位置
            如果Mapper.xml與Dao介面檔案在同一個包下且同名,spring中MapperScannerConfigurer掃描Dao介面檔案的同時會自動掃描同名的Mapper.xml並裝配到Dao介面檔案
            如果Mapper.xml與Dao介面檔案不在同一個包下或者不同名,就必須使用配置mapperLocations指定mapper.xml的位置
            此時spring是通過識別mapper.xml中的<mapper namespace=""> namespace的值來確定對應的Mapper.class-->
        <property name="mapperLocations" value="classpath:mapper/*Mapper.xml"/>
    </bean>
    <!--建立Dao物件,使用SqlSession的getMapper(dao.class)
        MapperScannerConfigurer:在內部呼叫getMapper()生成每個Dao介面的代理物件-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!--指定sqlSessionFactory的ID-->
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
        <!--指定包名,包名為Dao介面所在包名,MapperScannerConfigurer掃描該包,為每個介面執行getMapper()方法,
            得到每個介面的Dao物件,建立好的Dao物件放入Spring容器-->
        <property name="basePackage" value="com.dao"/>
    </bean>
</beans>
  1. 建立mybatis.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全域性行為-->
    <settings>
        <!--設定MyBatis輸出日誌-->
        <setting name="logImpl" value="STDOUT_LOGGING"/>
        <!--設定駝峰命名法與下劃線的匹配-->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
    <!--設定別名,可以將Mapper檔案中parameterType和resultType的值設定為別名,當使用實體類包名時,實體類的別名為首字母小寫的類名,模糊查詢時需使用全限定名稱-->
    <typeAliases>
        <!--實體類所在的包-->
        <package name="com.entity"/>
    </typeAliases>
</configuration>
  1. applicationContext.xml檔案中引入資料庫配置檔案
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       https://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/aop
       https://www.springframework.org/schema/aop/spring-aop.xsd">
    <!--引入資料庫配置檔案-->
    <import resource="classpath:conf/dataBaseConfig.xml"/>
    <!--包掃描-->
    <context:component-scan base-package="com.dao"/>
    <!--啟動註解-->
    <context:annotation-config/>
</beans>
  1. 建立Dao介面檔案
package com.dao;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface StudentDao {
	/*@Param註解用於命名引數,當只有一個引數時可不命名,當有多個引數時,命名引數可在Mapper對映檔案中使用引數名書寫SQL語句,否則只能根據引數的順序使用param1、param2書寫SQL語句*/
    void updateTokenById(@Param("id") int id, @Param("token") String token);
}

  1. 如果沒有配置mapperLocations屬性,就在Dao介面檔案相同資料夾中建立Mapper對映檔案(可以建立子資料夾用於防止Mapper檔案),如果配置了屬性,則可以在指定位置建立Mapper對映檔案。
<?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.dao.CommonDao">
    <!--id為介面方法名,resultType為返回值型別-->
    <select id="judgeStudentSelected" resultType="int">
        select count(*) from course_arrange where course_id=#{courseId} and stu_id=#{stuId}
    </select>
</mapper>

總結

以上為Spring與MyBatis整合的基本配置,基於此,可在service中使用Dao介面進行資料庫操作。