Spring整合MyBatis配置
阿新 • • 發佈:2021-01-27
技術標籤: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>
配置檔案
- 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
- 建立
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>
- 建立
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>
- 在
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>
- 建立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);
}
- 如果沒有配置
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介面進行資料庫操作。