Mybatis整合Spring(ssm整合待續)-day04
目錄
- Mybatis整合Spring
- 1. 建立專案
- 2. 匯入jar包
- 3. 配置mybatis的核心配置檔案
- 4. 在spring中配置資料來源
- 5. 在spring中配置SqlSessionFactory
- 6. 寫一個User類與它的對映檔案
- 7. 使用傳統方式編寫個UserDao與實現類
- 8. 在spring中配置dao實現的bean
- 9. 傳統dao的測試
- 10. 換成Mapper介面整合dao
- 11. 在mybatis核心配置檔案中載入對映檔案
- 12. 在Spring中配置MapperFactoryBean
- 13. 使用bean工廠來建立物件的測試
- 14. 使用MapperScannerConfigurer批量掃描建立代理物件
- 15. 使用MapperScannerConfigurer批量掃描建立代理物件測試
Mybatis整合Spring
- 整合版本:
- Spring 3.2
- Mybaties 3.2.7
- 專案結構:
1. 建立專案
- 建立一個javaweb專案
- 在WEB-INF下建立一個lib資料夾用來存放jar包
2. 匯入jar包
- 匯入mybatis核心包與依賴包
- 匯入mysql資料庫驅動包(根據自己資料庫的版本匯入)
- 匯入資料庫dbcp連線池
- 匯入spring+mvc包
- 匯入Mybatis-spring整合包
- 總的jar包
3. 配置mybatis的核心配置檔案
<?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>
<!--別名配置-->
<typeAliases>
<!--定義單個別名--><!--這樣配置用到全類名的地方就可以寫成別名user-->
<!--<typeAlias type="com.it.model.User" alias="user"></typeAlias>-->
<!--批量配置別名-->
<!--name:指定批量定義別名的類的包名,別名為類名(首字母大小寫都可以)-->
<!--這樣配置就是該包下的類名的別名就為類名,大小寫都可以
如:com.it.model包下的User類的別名就可以寫為 User 或 user -->
<package name="com.it.model"/>
</typeAliases>
<!--載入對映檔案-->
<mappers>
<!--<mapper resource="com/it/sqlmap/User.xml"></mapper>-->
<!--第一種:寫對映檔名-->
<!--<mapper resource="com/it/mapper/UserMapper.xml"></mapper>-->
<!--第二種:使用完全限定路徑【一般不用】-->
<!--<mapper url="file:///D:\MyBatis_day01\src\com\it\mapper\UserMapper.xml"></mapper>-->
<!--第三種:寫類名(使用mapper介面的全限定名)
一定要有個同名對映檔案與之對應,如果沒有,在UserMapper介面中宣告註解,否則報錯-->
<!--使用註解配置時,要刪除或改名對映檔案,否則報錯-->
<!--注意:不使用註解時,此種方法要求mapper介面和mapper對映檔案要名稱相同,且放到同一個目錄下-->
<!--<mapper class="com.it.mapper.UserMapper"></mapper>-->
<!--第四種:寫包名【推薦使用】
註冊指定包下的所有對映檔案-->
<!--注意:此種方法要求mapper介面和mapper對映檔案要名稱相同,且放到同一個目錄下-->
<mapper resource="com/it/sqlMap/User.xml"></mapper>
<package name="com.it.mapper"/><!--注意這種方式(包配置)只適用於Mapper代理-->
</mappers>
</configuration>
4. 在spring中配置資料來源
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">
<!-- 1.配置資料庫,dbcp資料庫連線池 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql:///mybatis_day01"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
<!--最大連線數-->
<property name="maxActive" value="10"/>
<!--最大空閒數-->
<property name="maxIdle" value="5"/>
</bean>
</beans>
5. 在spring中配置SqlSessionFactory
<!--2.配置會話工廠-->
<bean class="org.mybatis.spring.SqlSessionFactoryBean" id="sessionFactory">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation" value="classpath:SqlMapConfig.xml"></property>
</bean>
6. 寫一個User類與它的對映檔案
- 為以下屬性提供get/set、無參構造、符合自己使用的有參構造,toString
- User.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:名稱空間,它的作用就是對SQL進行分類化管理,可以理解為SQL隔離
注意:使用mapper代理開發時,namespace有特殊且重要的作用
-->
<mapper namespace="user">
<!--
id:statement的id,要求在名稱空間內唯一
parameterType:引數的java型別
resultType:查詢出的單條結果集對應的java型別
#{}:表示一個佔位符 ?
#{id}:表示該佔位符待接收引數的名稱為id。注意:如果引數為簡單型別時,#{}裡面的引數名稱可以是任意定義
-->
<select id="findUserById" parameterType="int" resultType="com.it.model.User">
SELECT * FROM USER WHERE id = #{id}
</select>
</mapper>
7. 使用傳統方式編寫個UserDao與實現類
- 與hibernate的使用類似,這裡繼承SqlSessionDaoSupport,通過它可以獲取getSqlSession()方法來獲取SqlSession物件,來運算元據庫
public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao {
@Override
public User findUserById(int id) {
return this.getSqlSession().selectOne("user.findUserById",id);
}
}
8. 在spring中配置dao實現的bean
<!--配置dao的幾種方式-->
<!--第一種-->
<!--3.傳統配置dao【現在一般不用】-->
<bean class="com.it.dao.impl.UserDaoImpl" id="userDao">
<property name="sqlSessionFactory" ref="sessionFactory"></property>
</bean>
9. 傳統dao的測試
@Test
public void test1(){
//1.載入spring配置檔案
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
//2.獲取dao的bean
UserDao userDao = (UserDao) context.getBean("userDao");
//3.呼叫dao方法
User user = userDao.findUserById(1);
System.out.println(user);
}
10. 換成Mapper介面整合dao
- 建立UserMapper介面(直接複製UserDao介面改名即可)
- 建立UserMapper.xml對映檔案(直接複製User.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:名稱空間,它的作用就是對SQL進行分類化管理,可以理解為SQL隔離
注意:使用mapper代理開發時,namespace有特殊且重要的作用
-->
<mapper namespace="com.it.mapper.UserMapper">
<select id="findUserById" parameterType="int" resultType="com.it.model.User">
SELECT * FROM USER WHERE id = #{id}
</select>
</mapper>
11. 在mybatis核心配置檔案中載入對映檔案
- 上面在配置別名的時候已經給過程式碼
<!--載入對映檔案-->
<mappers>
<!--<mapper resource="com/it/sqlmap/User.xml"></mapper>-->
<!--第一種:寫對映檔名-->
<!--<mapper resource="com/it/mapper/UserMapper.xml"></mapper>-->
<!--第二種:使用完全限定路徑【一般不用】-->
<!--<mapper url="file:///D:\MyBatis_day01\src\com\it\mapper\UserMapper.xml"></mapper>-->
<!--第三種:寫類名(使用mapper介面的全限定名)
一定要有個同名對映檔案與之對應,如果沒有,在UserMapper介面中宣告註解,否則報錯-->
<!--使用註解配置時,要刪除或改名對映檔案,否則報錯-->
<!--注意:不使用註解時,此種方法要求mapper介面和mapper對映檔案要名稱相同,且放到同一個目錄下-->
<!--<mapper class="com.it.mapper.UserMapper"></mapper>-->
<!--第四種:寫包名【推薦使用】
註冊指定包下的所有對映檔案-->
<!--注意:此種方法要求mapper介面和mapper對映檔案要名稱相同,且放到同一個目錄下-->
<mapper resource="com/it/sqlMap/User.xml"></mapper>
<package name="com.it.mapper"/><!--注意這種方式(包配置)只適用於Mapper代理-->
</mappers>
12. 在Spring中配置MapperFactoryBean
- 使用工廠Bean生成userMapper物件
<!--第二種-->
<!--4.由spring建立一個userMapper物件,使用工廠來建立物件-->
<bean class="org.mybatis.spring.mapper.MapperFactoryBean" id="userMapper">
<property name="sqlSessionFactory" ref="sessionFactory"></property>
<property name="mapperInterface" value="com.it.mapper.UserMapper"></property>
</bean>
13. 使用bean工廠來建立物件的測試
@Test
public void test2(){
//1.載入spring配置檔案
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
//2.獲取dao的bean
UserMapper userMapper = (UserMapper) context.getBean("userMapper");
//3.呼叫dao方法
User user = userMapper.findUserById(1);
System.out.println(user);
}
14. 使用MapperScannerConfigurer批量掃描建立代理物件
- 上面12的配置程式碼麻煩,每一個mapper就要建立一個工廠bean
<!--第三種-->
<!--批量建立mapper的bean物件
內部會掃描指定包下的mapper,為每一個介面建立代理物件,名字就是類名,首字母會自動改成小寫
使用的時候直接取即可
注意:
1.jdk1.8 用這種方式,bean不能建立成功 ,改成jdk1.7的即可
2.或者spring我換成spring3.2.9或以上就OK了
-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.it.mapper"></property>
<property name="sqlSessionFactoryBeanName" value="sessionFactory"></property>
</bean>
15. 使用MapperScannerConfigurer批量掃描建立代理物件測試
-測試與上一個測試相同,直接取userMapper即可(批量掃描會自動建立代理物件)
相關文章
- SSM整合(Spring、SpringMVC、Mybatis)SSMSpringMVCMyBatis
- SSM——Spring整合SpringMVC,MyBatisSSMSpringMVCMyBatis
- SSM(SpringMVC + Spring + Mybatis)整合SSMSpringMVCMyBatis
- mybatis與spring整合ssm01MyBatisSpringSSM
- SSM(Spring-MyBatis-SpringMVC)框架整合【完整版】SSMMyBatisSpringMVC框架
- Mybatis20_ssm整合10MyBatisSSM
- mybatis整合springMyBatisSpring
- Spring 整合 MyBatisSpringMyBatis
- Spring整合MyBatisSpringMyBatis
- MyBatis(九) 整合Spring、整合SpringMVCMyBatisSpringMVC
- [Android]後端之路--整合SSM(Spring+SpringMVC+MyBatis)框架(2)Android後端SSMSpringMVCMyBatis框架
- SSM三大框架整合詳細教程(Spring+SpringMVC+MyBatis)SSM框架SpringMVCMyBatis
- Spring整合Mybatis plusSpringMyBatis
- Mybatis與Spring整合MyBatisSpring
- Spring整合JUnit,MybatisSpringMyBatis
- Spring Boot 整合 MyBatisSpring BootMyBatis
- spring:spring與mybatis的整合SpringMyBatis
- spring整合mybatis(idea版)SpringMyBatisIdea
- ssm整合SSM
- Mybatis 的使用(整合Spring、SpringBoot)MyBatisSpring Boot
- Spring整合Mybatis方式二 - SqlSessionTemplateSpringMyBatisSQLSession
- Spring Boot —— 整合 MyBatis-PlusSpring BootMyBatis
- Spring+SpringMVC+MyBatis框架整合SpringMVCMyBatis框架
- Spring筆記(四)整合MybatisSpring筆記MyBatis
- Spring+SpringMVC+MyBatis的整合SpringMVCMyBatis
- JAVA學習Spring整合MybatisJavaSpringMyBatis
- SSM學習筆記3——整合 SpringMVC、整合SSMSSM筆記SpringMVC
- 【從零開始 圖文詳解】IDEA整合SSM框架:Spring+SpringMVC+MybatisIdeaSSM框架SpringMVCMyBatis
- Spring框架(五)實戰Spring整合MybatisSpring框架MyBatis
- SSM框架整合SSM框架
- 整合SSM框架SSM框架
- Spring同時整合JPA與MybatisSpringMyBatis
- MyBatis和Spring整合的奧祕MyBatisSpring
- Shiro和Spring MVC、Mybatis整合教程SpringMVCMyBatis
- 【Spring Boot】快速整合Mybatis-PlusSpring BootMyBatis
- Spring boot學習(三) Spring boot整合mybatisSpring BootMyBatis
- SSM整合步驟SSM
- SSM整合開發SSM