spring boot 1.5.4 整合 mybatis(十二)
上一篇:spring boot 1.5.4 整合log4j2(十一)
?
Spring Boot集成Mybatis
更多更詳細的配置參考文件:application.properties和《SpringBoot之application配置詳解》(新版本新增屬性缺失)? 或參考官網http://projects.spring.io/spring-boot/
?
Spring Boot集成Mybatis有兩種方式:
?
方式一:傳統的引入外部資源配置的方式,方便對mybatis的控制;
方式二:mybatis官方提供spring-boot整合的方式。
?
這里,還是使用UserMapper類和userMapper.xml文件分離的做法。關于mapper.xml的sql語句可以直接集成到Mapper接口中。詳見第4章節:將SQL語句集成到UserMapper接口類中
?
1??????方式一:整合mybatis資源
1.1????新建spring-boot-mybatis項目
spring-boot-mybatis項目源碼地址:
spring-boot相關項目源碼,
碼云地址:https://git.oschina.net/wyait/springboot1.5.4.git
github地址:https://github.com/wyait/spring-boot-1.5.4.git
項目整體結構:
1.2????pom.xml??
<projectxmlns="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.0http://maven.apache.org/xsd/maven-4.0.0.xsd">
?? <modelVersion>4.0.0</modelVersion>
?? <parent>
????? <!--spring boot項目的parent -->
????? <groupId>org.springframework.boot</groupId>
????? <artifactId>spring-boot-starter-parent</artifactId>
????? <version>1.5.4.RELEASE</version>
?? </parent>
?? <groupId>com.wyait.boot</groupId>
?? <artifactId>spring-boot-mybatis</artifactId>
?? <version>0.0.1-SNAPSHOT</version>
?? <packaging>war</packaging>
?? <dependencies>
????? <dependency>
??????? <!--spring boot 引入Web模塊。自動配置:tomcat、springmvc、jackson等 -->
??????? <groupId>org.springframework.boot</groupId>
??????? <artifactId>spring-boot-starter-web</artifactId>
??????? <exclusions>
?????????? <exclusion>
????????????? <artifactId>spring-boot-starter-logging</artifactId>
????????????? <groupId>org.springframework.boot</groupId>
?????????? </exclusion>
??????? </exclusions>
????? </dependency>
????? <dependency>
??????? <!--spring-boot整合mybatis-->
??????? <groupId>org.mybatis.spring.boot</groupId>
??????? <artifactId>mybatis-spring-boot-starter</artifactId>
??????? <version>1.1.1</version>
????? </dependency>
????? <dependency>
??????? <groupId>mysql</groupId>
??????? <artifactId>mysql-connector-java</artifactId>
????? </dependency>
????? <!--MyBatis提供了攔截器接口,我們可以實現自己的攔截器,將其作為一個plugin裝入到SqlSessionFactory中。 Github上有位開發者寫了一個分頁插件,我覺得使用起來還可以,挺方便的。
??????? Github項目地址:https://github.com/pagehelper/Mybatis-PageHelper -->
????? <dependency>
??????? <groupId>com.github.pagehelper</groupId>
??????? <artifactId>pagehelper</artifactId>
??????? <version>4.1.0</version>
????? </dependency>
????? <!--tomcat 的支持. -->
????? <dependency>
??????? <groupId>org.springframework.boot</groupId>
??????? <artifactId>spring-boot-starter-tomcat</artifactId>
??????? <!--添加<scope>provided</scope>,因為provided表明該包只在編譯和測試的時候用 -->
??????? <scope>provided</scope>
????? </dependency>
????? <dependency>
??????? <!--jsp頁面支持 -->
??????? <groupId>org.apache.tomcat.embed</groupId>
??????? <artifactId>tomcat-embed-jasper</artifactId>
??????? <scope>provided</scope>
????? </dependency>
????? <dependency>
??????? <groupId>javax.servlet</groupId>
??????? <artifactId>jstl</artifactId>
????? </dependency>
????? <dependency>
??????? <groupId>org.springframework.boot</groupId>
??????? <artifactId>spring-boot-starter-log4j</artifactId>
??????? <!--這里需要指定版本,否則報錯【有可能是spring-boot-1.5.4.RELEASE版本沒有管理log4j版本的原因】 -->
??????? <version>1.3.2.RELEASE</version>
????? </dependency>
?
????? <!--spring boot集成Swagger2-->
????? <dependency>
??????? <groupId>io.springfox</groupId>
??????? <artifactId>springfox-swagger2</artifactId>
??????? <version>2.6.1</version>
????? </dependency>
????? <dependency>
??????? <groupId>io.springfox</groupId>
??????? <artifactId>springfox-swagger-ui</artifactId>
??????? <version>2.6.1</version>
????? </dependency>
????? <!--devtools可以實現頁面熱部署(即頁面修改后會立即生效,這個可以直接在application.properties文件中配置spring.thymeleaf.cache=false或者視圖解析器設置緩存為false來實現),
??????? 實現類文件熱部署(類文件修改后不會立即生效,待編譯后生效),實現對屬性文件的熱部署。即devtools會監聽classpath下的文件變動,并且會立即重啟應用(發生在保存時機),注意:因為其采用的虛擬機機制,該項重啟是很快的 -->
????? <dependency>
??????? <groupId>org.springframework.boot</groupId>
??????? <artifactId>spring-boot-devtools</artifactId>
??????? <optional>true</optional>
??????? <!--optional=true,依賴不會傳遞,該項目依賴devtools;之后依賴SpringBoot1項目的項目如果想要使用devtools,需要重新引入 -->
????? </dependency>
?? </dependencies>
?? <build>
????? <plugins>
??????? <plugin>
?????????? <!--配置spring boot之maven插件 -->
?????????? <groupId>org.springframework.boot</groupId>
?????????? <artifactId>spring-boot-maven-plugin</artifactId>
?????????? <!--<configuration> fork : 如果沒有該項配置,devtools不會起作用,即應用不會restart 【實測:可以不配置】
????????????? <fork>true</fork></configuration> -->
??????? </plugin>
????? </plugins>
?? </build>
</project>
1.3????Application.java
// 這是一個配置Spring的配置類
@Configuration
// @SpringBootApplication:Spring Boot項目的核心注解,主要目的是開啟自動配置,自動掃描該類同級包以及子包。
@SpringBootApplication
public class Application {
?
?? publicstatic void main(String[] args) {
????? //啟動spring boot應用
????? SpringApplicationsa = new SpringApplication(Application.class);
????? //禁用devTools熱部署
????? System.setProperty("spring.devtools.restart.enabled","false");
????? //禁用命令行更改application.properties屬性
????? sa.setAddCommandLineProperties(false);
????? sa.run(args);
?? }
}
1.4????mybatis相關配置類:集成pageHelper分頁插件,并開啟事務
?
@Configuration
@EnableTransactionManagement
// 開啟注解事務支持
public class MybatisConfigimplements TransactionManagementConfigurer {
?? //spring容器管理,可以直接注入使用
?? @Autowired
?? DataSourcedataSource;
?
?? @Bean(name= "sqlSessionFactory")
?? publicSqlSessionFactory sqlSessionFactoryBean() {
????? SqlSessionFactoryBeanbean = new SqlSessionFactoryBean();
????? bean.setDataSource(dataSource);
????? bean.setTypeAliasesPackage("com.wyait.boot.pojo");
?
????? //分頁插件
????? PageHelperpageHelper = new PageHelper();
????? Propertiesproperties = new Properties();
????? properties.setProperty("reasonable","true");
????? properties.setProperty("supportMethodsArguments","true");
????? properties.setProperty("returnPageInfo","check");
????? properties.setProperty("params","count=countSql");
????? pageHelper.setProperties(properties);
?
????? //添加插件
????? bean.setPlugins(newInterceptor[] { pageHelper });
?
????? //添加XML目錄
????? ResourcePatternResolverresolver = new PathMatchingResourcePatternResolver();
????? try{
??????? bean.setMapperLocations(resolver
????????????? .getResources("classpath:mybatis/*.xml"));
??????? returnbean.getObject();
????? }catch (Exception e) {
??????? e.printStackTrace();
??????? thrownew RuntimeException(e);
????? }
?? }
?
?? @Bean
?? publicSqlSessionTemplate sqlSessionTemplate(
??????? SqlSessionFactorysqlSessionFactory) {
????? returnnew SqlSessionTemplate(sqlSessionFactory);
?? }
?
?? //開啟注解事務
?? @Bean
?? @Override
?? publicPlatformTransactionManager annotationDrivenTransactionManager() {
????? returnnew DataSourceTransactionManager(dataSource);
?? }
}
1.5????TODO 編寫實體類、service、mapper、mapper.xml
1.6??? 啟動,測試
TODO
?
2??????方式二:mybatis整合spring-boot
mybatis-spring-boot項目源碼地址:
spring-boot相關項目源碼,
碼云地址:https://git.oschina.net/wyait/springboot1.5.4.git
github地址:https://github.com/wyait/spring-boot-1.5.4.git
2.1????新建mybatis-spring-boot工程
項目結構:
Application.java
// 這是一個配置Spring的配置類
@Configuration
// @SpringBootApplication:Spring Boot項目的核心注解,主要目的是開啟自動配置,自動掃描該類同級包以及子包。
@SpringBootApplication
//@MapperScan(basePackages ="com.wyait.boot.dao")
public class Application {
?
?? publicstatic void main(String[] args) {
????? //啟動spring boot應用
????? SpringApplicationsa = new SpringApplication(Application.class);
????? //禁用devTools熱部署
????? System.setProperty("spring.devtools.restart.enabled","false");
????? //禁用命令行更改application.properties屬性
????? sa.setAddCommandLineProperties(false);
????? sa.run(args);
?? }
}
?
2.2????pom.xml
<projectxmlns="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.0http://maven.apache.org/xsd/maven-4.0.0.xsd">
?? <modelVersion>4.0.0</modelVersion>
?? <parent>
????? <!--spring boot項目的parent -->
????? <groupId>org.springframework.boot</groupId>
????? <artifactId>spring-boot-starter-parent</artifactId>
????? <version>1.5.4.RELEASE</version>
?? </parent>
?? <groupId>com.wyait.mybatis</groupId>
?? <artifactId>mybatis-spring-boot</artifactId>
?? <version>0.0.1-SNAPSHOT</version>
?? <packaging>war</packaging>
?? <dependencies>
????? <dependency>
??????? <!--spring boot 引入Web模塊。自動配置:tomcat、springmvc、jackson等 -->
?? ????? <groupId>org.springframework.boot</groupId>
??????? <artifactId>spring-boot-starter-web</artifactId>
??????? <exclusions>
?????????? <exclusion>
????????????? <artifactId>spring-boot-starter-logging</artifactId>
????????????? <groupId>org.springframework.boot</groupId>
?????????? </exclusion>
????? ?? </exclusions>
????? </dependency>
????? <dependency>
??????? <!--spring-boot整合mybatis-->
??????? <groupId>org.mybatis.spring.boot</groupId>
??????? <artifactId>mybatis-spring-boot-starter</artifactId>
??????? <version>1.1.1</version>
????? </dependency>
????? <dependency>
??????? <groupId>mysql</groupId>
??????? <artifactId>mysql-connector-java</artifactId>
????? </dependency>
????? <dependency>
????? <!--pageHelper分頁插件 -->
??????? <groupId>com.github.pagehelper</groupId>
??????? <artifactId>pagehelper-spring-boot-starter</artifactId>
??????? <version>1.1.1</version>
????? </dependency>
????? <!-- MyBatis提供了攔截器接口,我們可以實現自己的攔截器,將其作為一個plugin裝入到SqlSessionFactory中。 Github上有位開發者寫了一個分頁插件,我覺得使用起來還可以,挺方便的。
??????? Github項目地址:https://github.com/pagehelper/Mybatis-PageHelper -->
????? <!--<dependency>
??????? <groupId>com.github.pagehelper</groupId>
??????? <artifactId>pagehelper</artifactId>
??????? <version>4.1.0</version>
????? </dependency>-->
????? <!--tomcat 的支持. -->
????? <dependency>
??????? <groupId>org.springframework.boot</groupId>
??????? <artifactId>spring-boot-starter-tomcat</artifactId>
??????? <!--添加<scope>provided</scope>,因為provided表明該包只在編譯和測試的時候用 -->
??????? <scope>provided</scope>
????? </dependency>
????? <dependency>
??????? <!--jsp頁面支持 -->
??????? <groupId>org.apache.tomcat.embed</groupId>
??????? <artifactId>tomcat-embed-jasper</artifactId>
??????? <scope>provided</scope>
????? </dependency>
????? <dependency>
??????? <groupId>javax.servlet</groupId>
??????? <artifactId>jstl</artifactId>
????? </dependency>
????? <dependency>
??????? <groupId>org.springframework.boot</groupId>
??????? <artifactId>spring-boot-starter-log4j</artifactId>
??????? <!--這里需要指定版本,否則報錯【有可能是spring-boot-1.5.4.RELEASE版本沒有管理log4j版本的原因】 -->
??????? <version>1.3.2.RELEASE</version>
????? </dependency>
?
????? <!--spring boot集成Swagger2-->
????? <dependency>
??????? <groupId>io.springfox</groupId>
??????? <artifactId>springfox-swagger2</artifactId>
??????? <version>2.6.1</version>
????? </dependency>
????? <dependency>
??????? <groupId>io.springfox</groupId>
??????? <artifactId>springfox-swagger-ui</artifactId>
??????? <version>2.6.1</version>
????? </dependency>
????? <!--devtools可以實現頁面熱部署(即頁面修改后會立即生效,這個可以直接在application.properties文件中配置spring.thymeleaf.cache=false或者視圖解析器設置緩存為false來實現),
??????? 實現類文件熱部署(類文件修改后不會立即生效,待編譯后生效),實現對屬性文件的熱部署。即devtools會監聽classpath下的文件變動,并且會立即重啟應用(發生在保存時機),注意:因為其采用的虛擬機機制,該項重啟是很快的 -->
????? <dependency>
??????? <groupId>org.springframework.boot</groupId>
??????? <artifactId>spring-boot-devtools</artifactId>
??????? <optional>true</optional>
??????? <!--optional=true,依賴不會傳遞,該項目依賴devtools;之后依賴SpringBoot1項目的項目如果想要使用devtools,需要重新引入 -->
????? </dependency>
?? </dependencies>
?? <build>
????? <plugins>
??????? <plugin>
?????????? <!--配置spring boot之maven插件 -->
?????????? <groupId>org.springframework.boot</groupId>
?? ??????? <artifactId>spring-boot-maven-plugin</artifactId>
?????????? <!--<configuration> fork : 如果沒有該項配置,devtools不會起作用,即應用不會restart 【實測:可以不配置】
????????????? <fork>true</fork></configuration> -->
??????? </plugin>
????? </plugins>
?? </build>
</project>
2.3????application.properties配置:集成pageHelper,指定mapper.xml路徑
# mysql
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# 使用druid連接池? 需要注意的是:spring.datasource.type舊的spring boot版本是不能識別的。
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
# mybatis
mybatis.type-aliases-package=com.wyait.boot.pojo
mybatis.mapper-locations=classpath:mapper/*.xml
# 通用mapper配置
#mapper.mappers=com.wyait.boot.dao
#mapper.not-empty=false
#mapper.identity=MYSQL
# pagehelper
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.returnPageInfo=check
pagehelper.params=count=countSql
2.4????UserMapper
TODO 詳見項目
mybatis-spring-boot項目源碼地址:https://git.oschina.net/wyait/springboot1.5.4.git
在接口上添加@Mapper注解即可或者在Application上添加掃描:@MapperScan(basePackages = "com.wyait.boot.dao")
2.5????啟動,測試結果
3????? 將SQL語句集成到UserMapperXML接口類中
寫法:
@Mapper
public interface UserMapperXML {
? @Select("SELECT * FROM USERWHERE NAME = #{name}")
? public UserfindUser(@Param("name") String name);
?
? @Select("SELECT * FROMUSER")
? public List<User>findAllUser();
?
? /**
? ?*
? ?* @描述:更新用戶信息
? ?* @創建人:wyait
? ?* @創建時間:2017年6月29日下午1:33:09
? ?* @param user
? ?* @return
? ?*/
? @Update("update user setage=#{age} where id=#{id}")
? public int update(User user);
}
?
更多用法可進行百度。
4 ???? 總結
項目:mybatis-spring-boot整合了Mapper接口分離Sql在xml中的寫法和注解sql寫法。詳見項目源碼。
spring-boot相關項目源碼,
碼云地址:https://git.oschina.net/wyait/springboot1.5.4.git
github地址:https://github.com/wyait/spring-boot-1.5.4.git
?
spring boot系列文章:
spring boot 1.5.4 概述(一)
spring boot 1.5.4 入門和原理(二)
spring boot 1.5.4 之web開發(三)
spring boot 1.5.4 整合JSP(四)
spring boot 1.5.4 集成devTools(五)
spring boot 1.5.4 集成JdbcTemplate(六)
spring boot 1.5.4 集成spring-Data-JPA(七)
spring boot 1.5.4 配置文件詳解(八)
spring boot 1.5.4 統一異常處理(九)
spring boot 1.5.4 定時任務和異步調用(十)
spring boot 1.5.4 整合log4j2(十一)
spring boot 1.5.4 整合 mybatis(十二)
spring boot 1.5.4 整合 druid(十三)
spring boot 1.5.4 之監控Actuator(十四)
spring boot 1.5.4 整合webService(十五)
spring boot 1.5.4 整合redis、攔截器、過濾器、監聽器、靜態資源配置(十六)
spring boot 1.5.4 整合rabbitMQ(十七)
spring boot 1.5.4 集成Swagger2構建Restful API(十八)
spring boot 1.5.9 整合redis(十九)
轉載于:https://blog.51cto.com/wyait/1969626
總結
以上是生活随笔為你收集整理的spring boot 1.5.4 整合 mybatis(十二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: javascript的垃圾回收机制
- 下一篇: layer iframe层的使用,传参