6 Spring和Mybaits的整合
阿新 • • 發佈:2021-06-11
6 Spring和Mybaits的整合
一,整合概述
將MyBatis與Spring進行整合,主要解決的問題就是將SqlSessionFactory物件交由Spring容器來管理,所以,該整合,只需要將SqlSessionFactory的物件生成器SqlSessionFactoryBean註冊在Spring容器中,再將其注入給Dao的實現類即可完成整合。、
Mybatis開發過程出現的問題:
- 配置實體別名時候繁瑣
- 註冊Mybatis主配置檔案繁瑣
- MybaitsAPI的呼叫繁瑣,即使封裝了一次也存在大量程式碼冗餘
二,整合開發步驟
1.開發回顧
Mybatis 常規開發:
- 建立表
- 建立實體
- 建立DAO
- 實現對應DAOMapper檔案
- 配置主配置檔案
2.Mybaits-Spring整合開發步驟
- 建立表
- 建立實體
- 建立DAO
- 實現對應DAOMapper檔案
- 配置Spring配置檔案
3.環境配置
需要的額外的Jar包有(只是整合)
- druid
- spring-tx
- mybatis-spring
- spring-jdbc
- mysql-connector-java
- mybatis
4.整合編碼
Mybatis-Spring.xml
連線池配置
指定阿里巴巴的Druid連線池
資料庫驗證資訊欄位是固定的
<bean id="dataSourse" class="com.alibaba.druid.pool.DruidDataSource" > <property name="username" value="root"/> <property name="url" value="jdbc:mysql://localhost:3306/jdbc_test?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC"/> <property name="password" value="123456"/> <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/> </bean>
sqlseesion工廠建立
類型別名使用typeAliases指定,日後使用實體直接使用類名
mapperLocations使用List集合,指定目錄,會自動尋找,此處是src/Mapper目錄下的的符合*Mapper.xml命名規範的所有檔案
注:
org.Mybatis.StudentEntity是實體類
<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean"> <!--指定資料來源--> <property name="dataSource" ref="dataSourse"/> <!--類型別名,日後直接用類名充當--> <property name="typeAliases" value="org.Mybatis.StudentEntity"/> <!--指定Mapper位置--> <property name="mapperLocations" > <list> <value> <!--通配寫法,按照這個命名規範書寫--> classpath:Mapper/*Mapper.xml </value> </list> </property> </bean>
建立DAO 物件
basePackage指定的是DAO類所在的包
在通過Spring工廠獲取物件時使用的時介面名首字母小寫,我們在介面命名時就需要約定介面名首字母大寫
注:
org.Mybatis是DAO所在的包
<bean id="scanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!--對應上面的SqlSessionFactoryBean的名字-->
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBean"/>
<!--MapperScannerConfigurer到DAO下的包自動的找到對應DAO介面來建立物件-->
<!--注意!在通過Spring工廠獲取物件時使用的時介面名首字母小寫,我們在介面命名時就需要約定介面名首字母大寫-->
<property name="basePackage" value="org.Mybatis"/>
</bean>
呼叫
只需要new出工廠和實體類就可以對Mybtis操作
ApplicationContext context=new ClassPathXmlApplicationContext("Mybatis-Spring.xml");
StudentDAO studentDAO= (StudentDAO) context.getBean("studentDAO");
StudentEntity studentModle = new StudentEntity();
studentModle.setId(1);
studentModle.setEmail("[email protected]");
studentModle.setAge(22);
studentModle.setName("test");
studentDAO.InsertStuinfo(studentModle);
對比原來直接使用mybatisapi確實少了不少程式碼、
完整程式碼:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--連線池配置-->
<bean id="dataSourse" class="com.alibaba.druid.pool.DruidDataSource" >
<property name="username" value="root"/>
<property name="url" value="jdbc:mysql://localhost:3306/jdbc_test?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC"/>
<property name="password" value="123456"/>
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
</bean>
<!--sqlseesion工廠建立-->
<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--指定資料來源-->
<property name="dataSource" ref="dataSourse"/>
<!--類型別名,日後直接用類名充當-->
<property name="typeAliases" value="org.Mybatis.StudentEntity"/>
<property name="mapperLocations" >
<list>
<value>
<!--通配寫法,按照這個命名規範書寫-->
classpath:Mapper/*Mapper.xml
</value>
</list>
</property>
</bean>
<!--建立DAO 物件-->
<bean id="scanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!--對應上面的SqlSessionFactoryBean的名字-->
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBean"/>
<!--MapperScannerConfigurer到DAO下的包自動的找到對應DAO介面來建立物件-->
<!--注意!在通過Spring工廠獲取物件時使用的時介面名首字母小寫,我們在介面命名時就需要約定介面名首字母大寫-->
<property name="basePackage" value="org.Mybatis"/>
</bean>
</beans>