日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring整合Mybatis之注解方式,(注解整合Junit)

發(fā)布時(shí)間:2024/4/15 javascript 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring整合Mybatis之注解方式,(注解整合Junit) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Spring整合Mybatis之注解方式

我有一篇博客詳細(xì)寫了我自己使用xml的方法Spring整合MyBatis,現(xiàn)在我就把核心配置文件中的每個(gè)bean的配置使用注解的方式實(shí)現(xiàn)

注解整合MyBatis分析

注解整合MyBatis分析

? 業(yè)務(wù)類使用注解形式聲明bean,屬性采用注解注入
? 建立獨(dú)立的配置管理類,分類管理外部資源,根據(jù)功能進(jìn)行分類,并提供對(duì)應(yīng)的方法獲取bean
? 使用注解形式啟動(dòng)bean掃描,加載所有注解配置的資源(bean)
? 使用AnnotationConfigApplicationContext對(duì)象加載所有的啟動(dòng)配置類,內(nèi)部使用導(dǎo)入方式進(jìn)行關(guān)聯(lián)

注解整合MyBatis步驟

  • 修改mybatis外部配置文件格式為注解格式
  • 業(yè)務(wù)類使用@Component聲明bean,使用@Autowired注入對(duì)象
  • 建立配置文件JDBCConfig與MyBatisConfig類,并將其導(dǎo)入到核心配置類SpringConfig
  • 開啟注解掃描
  • 使用AnnotationConfigApplicationContext對(duì)象加載配置項(xiàng)
  • 項(xiàng)目目錄結(jié)構(gòu)

    項(xiàng)目準(zhǔn)備

    數(shù)據(jù)庫mysql

    /* SQLyog Ultimate v12.14 (64 bit) MySQL - 5.6.45 : Database - test ********************************************************************* *//*!40101 SET NAMES utf8 */;/*!40101 SET SQL_MODE=''*/;/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; CREATE DATABASE /*!32312 IF NOT EXISTS*/`test` /*!40100 DEFAULT CHARACTER SET utf8 */;USE `test`;/*Table structure for table `account` */DROP TABLE IF EXISTS `account`;CREATE TABLE `account` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(20) DEFAULT NULL,`money` double DEFAULT NULL,PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;/*Data for the table `account` */insert into `account`(`id`,`name`,`money`) values (1,'小付',800),(2,'小花',1200),(3,'小張',324),(4,'小紅花',1434),(5,'笑小',1314),(6,'你鉿',6575),(8,'花花',333);/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

    pom.xml

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.fs</groupId><artifactId>day02_spring_annotation_MyBatis</artifactId><version>1.0-SNAPSHOT</version><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.1.9.RELEASE</version></dependency><!-- jdbc--><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.1.9.RELEASE</version></dependency><!-- test--><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>5.1.9.RELEASE</version></dependency><!-- spring整合mybatis--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>2.0.1</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.5</version></dependency><!-- mysql--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version></dependency><!--druid連接池--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.20</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.12</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency></dependencies></project>

    代碼演示(代碼中有詳細(xì)解釋)

    SpringConfig

    package com.fs.config;import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; //表示這個(gè)類是一個(gè)spring的配置類,并將其存入到ioc容器中 @Configuration /*開啟掃描注解的那些包 <!-- 啟動(dòng)spring掃描注解的包,只掃描spring的注解--><context:component-scan base-package="com.fs"/>*/ @ComponentScan("com.fs") //引入其他的配置類 @Import({JdbcConfig.class,MybatisConfig.class}) public class SpringConfig { }

    JdbcConfig

    jdbc.properties

    jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://192.168.93.132:3306/test jdbc.username=root jdbc.password=root

    我們將下面的配置轉(zhuǎn)變成spring的配置類,通過注解實(shí)現(xiàn)

    <!-- 引入properties--><context:property-placeholder location="classpath:jdbc.properties"/> <!-- 整合druid,把DruidDataSource交給spring管理--><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"><property name="driverClassName" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></bean>

    創(chuàng)建一個(gè)JdbcConfig

    package com.fs.config;import com.alibaba.druid.pool.DruidDataSource; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.PropertySource; /* <!-- 引入properties--><context:property-placeholder location="classpath:jdbc.properties"/>*/ @PropertySource("classpath:jdbc.properties") public class JdbcConfig {//@Value("${Key}")@Value("${jdbc.driver}")private String driver;@Value("${jdbc.url}")private String url;@Value("${jdbc.username}")private String username;@Value("${jdbc.password}")private String password;/*<!-- 整合druid,把DruidDataSource交給spring管理--><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"><property name="driverClassName" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></bean>*///將返回的DruidDataSource交給ioc管理@Beanpublic DruidDataSource getDruidDataSource(){//創(chuàng)建DruidDataSourceDruidDataSource druidDataSource = new DruidDataSource();//給屬性賦值,這個(gè)是上面從配置文件中依耐注入給屬性的druidDataSource.setDriverClassName(driver);druidDataSource.setUrl(url);druidDataSource.setUsername(username);druidDataSource.setPassword(password);//返回DruidDataSource,然后交給ioc管理return druidDataSource;} }

    MybatisConfig

    將下面的配置文件中的配置轉(zhuǎn)變成java配置類,通過注解實(shí)現(xiàn)

    <!-- 整合MyBatis--><!-- 配置MyBatis的會(huì)話工廠類 mybatis.spring 下的SqlSessionFactoryBean配置的sqlSessionFactory得到SqlSession,然后MyBatis從spring中拿到SqlSession.getMapper()去動(dòng)態(tài)代理dao--><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 給MyBatis配置鏈接池,依耐注入--><property name="dataSource" ref="dataSource"/> <!-- 配置別名掃描的包,被掃描的包下的類起的別名就是類名首字母小寫,用于mapper.xml文件中使用--><property name="typeAliasesPackage" value="com.fs.pojo"/></bean> <!--配置MyBatis掃描dao的包,讓MyBatis動(dòng)態(tài)代理生成這個(gè)dao的實(shí)現(xiàn)類,并交給ioc管理mybatis-spring這個(gè)包下MapperScannerConfigurer提供了spring于MyBatis的整合--><bean id="mapperScanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 告訴MyBatis我dao在哪里.然后MyBatis將這個(gè)dao實(shí)現(xiàn),然后給spring管理--><property name="basePackage" value="com.fs.dao"/></bean>

    創(chuàng)建一個(gè)MybatisConfig

    package com.fs.config;import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.mapper.MapperScannerConfigurer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean;import javax.sql.DataSource;public class MybatisConfig {/*<!-- 配置MyBatis的會(huì)話工廠類 mybatis.spring 下的SqlSessionFactoryBean配置的sqlSessionFactory得到SqlSession,然后MyBatis從spring中拿到SqlSession.getMapper()去動(dòng)態(tài)代理dao--><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 給MyBatis配置鏈接池,依耐注入--><property name="dataSource" ref="dataSource"/> <!-- 配置別名掃描的包,被掃描的包下的類起的別名就是類名首字母小寫,用于mapper.xml文件中使用--><property name="typeAliasesPackage" value="com.fs.pojo"/></bean>*/@Beanpublic SqlSessionFactoryBean getSqlSessionFactoryBean(@Autowired DataSource dataSource){//創(chuàng)建sql會(huì)話工廠類 //這里@Autowired也是從ioc拿DataSourceSqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();//從ioc容器中取出jdbcConfig中配置的druidDatasourcesqlSessionFactoryBean.setDataSource(dataSource);//配置起別名sqlSessionFactoryBean.setTypeAliasesPackage("com.fs.pojo");return sqlSessionFactoryBean;}/*<!--配置MyBatis掃描dao的包,讓MyBatis動(dòng)態(tài)代理生成這個(gè)dao的實(shí)現(xiàn)類,并交給ioc管理mybatis-spring這個(gè)包下MapperScannerConfigurer提供了spring于MyBatis的整合--><bean id="mapperScanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 告訴MyBatis我dao在哪里.然后MyBatis將這個(gè)dao實(shí)現(xiàn),然后給spring管理--><property name="basePackage" value="com.fs.dao"/></bean>*///創(chuàng)建MyBatis動(dòng)態(tài)代理掃描類@Beanpublic MapperScannerConfigurer getMapperScannerConfigurer(){//創(chuàng)建映掃描配置類MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();//設(shè)置動(dòng)態(tài)代理掃描的dao的包mapperScannerConfigurer.setBasePackage("com.fs.dao");//交給spring管理return mapperScannerConfigurer;} }

    Dao Service接口

    AccountDao

    package com.fs.dao;import com.fs.pojo.Account; import org.apache.ibatis.annotations.*;import java.util.List;public interface AccountDao {@Select("select * from account")List<Account> findAll();//查詢所有 }

    AccountService

    package com.fs.service;import com.fs.pojo.Account;import java.util.List;public interface AccountService {List<Account> findAll(); }

    AccountServiceImpl

    將下面的配置文件中的配置信息,通過注解的方法交給spring管理

    <!-- 把業(yè)務(wù)類 AccountServiceImpl 交給ioc管理 --><bean id="accountServiceImpl" class="com.fs.service.impl.AccountServiceImpl"> <!-- 依耐注入dao,這個(gè)dao被MyBatis動(dòng)態(tài)代理實(shí)現(xiàn)后被spring存放在ioc容器中--><property name="accountDao" ref="accountDao"/></bean>
    AccountServiceImpl
    package com.fs.service.impl;import com.fs.dao.AccountDao; import com.fs.pojo.Account; import com.fs.service.AccountService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;import java.util.List; /*<!-- 把業(yè)務(wù)類 AccountServiceImpl 交給ioc管理 --><bean id="accountServiceImpl" class="com.fs.service.impl.AccountServiceImpl"> <!-- 依耐注入dao,這個(gè)dao被MyBatis動(dòng)態(tài)代理實(shí)現(xiàn)后被spring存放在ioc容器中--><property name="accountDao" ref="accountDao"/></bean>*/ @Service public class AccountServiceImpl implements AccountService {//從ioc獲取MyBatis動(dòng)態(tài)代理的accountDao實(shí)現(xiàn)類@Autowiredprivate AccountDao accountDao;//提供DI依耐注入的set方法 // public void setAccountDao(AccountDao accountDao) { // this.accountDao = accountDao; // }@Overridepublic List<Account> findAll() {return accountDao.findAll();} }

    測(cè)試整合代碼(注解整合Junit)

    注意:
    ◆ 從Spring5.0以后,要求Junit的版本必須是4.12及以上
    ◆ Junit僅用于單元測(cè)試,不能將Junit的測(cè)試類配置成spring的bean,否則該配置將會(huì)被打包進(jìn)入工
    程中

    測(cè)試代碼

    package com.fs.service;import com.fs.config.SpringConfig; import com.fs.pojo.Account; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import java.util.List; //設(shè)定spring專用的類加載器 @RunWith(SpringJUnit4ClassRunner.class) //設(shè)定加載的spring的配置類或者文件 @ContextConfiguration(classes = SpringConfig.class) public class AccountServiceTest {//從spring容器中獲取AccountService的實(shí)現(xiàn)類@Autowiredprivate AccountService accountService;@Testpublic void findAll() {//根據(jù)配置文件獲取到ioc容器//ApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringConfig.class);//從ioc容器中拿到業(yè)務(wù)層類//AccountService bean = applicationContext.getBean(AccountService.class);//調(diào)用查詢方法List<Account> all = accountService.findAll();//輸出一下System.out.println(all);} }

    測(cè)試結(jié)果

    說明整合成功:

    總結(jié)

    以上是生活随笔為你收集整理的Spring整合Mybatis之注解方式,(注解整合Junit)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。