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项目源码地址:https://git.oschina.net/wyait/springboot1.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    启动,测试

详见项目:

mybatis-spring-boot项目源码地址:https://git.oschina.net/wyait/springboot1.5.4.git

2      方式二:mybatis整合spring-boot

mybatis-spring-boot项目源码地址:https://git.oschina.net/wyait/springboot1.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接口分离Sqlxml中的写法和注解sql写法。详见项目源码。

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(十三)

时间: 2024-11-03 21:22:20

spring boot 1.5.4 整合 mybatis(十二)的相关文章

Spring Boot学习记录(三)--整合Mybatis

Spring Boot学习记录(三)–整合Mybatis 标签(空格分隔): spring-boot 控制器,视图解析器前面两篇都已弄好,这一篇学习持久层框架整合. 1.数据源配置 数据源使用druid,maven引入相关依赖,包括spring-jdbc依赖,mysql依赖 1.转换问题 配置的过程要学会为什么这样配置,而不是只学会了配置.这里我们可以和以前的配置方式对比: 以前版本 <!--配置数据库连接池Druid--> <bean id="dataSource"

Spring Boot使用配置文件方式整合MyBatis

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

Spring Boot框架 - 数据访问 - 整合Mybatis

一.新建Spring Boot项目 注意:创建的时候勾选Mybatis依赖,pom文件如下 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.1</version> </dependency> 二.配置文件applica

spring boot 1.5.4 整合 druid(十三)

上一篇:spring boot 1.5.4 整合 mybatis(十二) 1      集成druid连接池 spring boot集成druid项目mybatis-spring-boot源码地址: https://git.oschina.net/wyait/springboot1.5.4.git 1.1  druid简介 Druid是阿里巴巴开源的一个项目.,整个项目由数据库连接池.插件框架和SQL解析器组成.该项目主要是为了扩展JDBC的一些限制,可以让程序员实现一些特殊的需求,比如向密钥服

spring boot 1.5.4 整合log4j2(十一)

上一篇:spring boot 1.5.4 定时任务和异步调用(十) Spring Boot整合log4j2 spring boot整合log4j2项目spring-boot-jsp源码: https://git.oschina.net/wyait/springboot1.5.4.git 1.1  log4j2概要 对于我们开发人员来说,日志记录往往不被重视.在生产环境中,日志是查找问题来源的重要依据.日志可记录程序运行时产生的错误信息.状态信息.调试信息和执行时间信息等多种多样的信息.可以在程

spring boot与jdbcTemplate的整合案例2

简单入门了spring boot后,接下来写写跟数据库打交道的案例.博文采用spring的jdbcTemplate工具类与数据库打交道. 下面是搭建的springbootJDBC的项目的总体架构图: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www

Spring Boot (七): Mybatis极简配置

Spring Boot (七): Mybatis极简配置 1. 前言 ORM 框架的目的是简化编程中的数据库操作,经过这么多年的发展,基本上活到现在的就剩下两家了,一个是宣称可以不用写 SQL 的 Hibernate ,一个是对 SQL 非常友好的 Mybaties ,,两者各有特点,在企业级系统开发中可以根据需求灵活使用.发现一个有趣的现象:传统企业大都喜欢使用 Hibernate ,互联网行业通常使用 Mybatis . Hibernate 特点就是所有的 SQL 都用 Java 代码来生成

Spring Boot (八): Mybatis 增强工具 MyBatis-Plus

1. 简介 在上一篇文章<Spring Boot (七): Mybatis极简配置> 中我们介绍了在 Spring Boot 中 Mybatis 的基础使用方式,其中有一部分美中不足的是 Mybatis 本身并未提供分页功能,还需要我们自己手动添加 PageHelper 插件或者自己实现分页的工具类,并且对单表的操作并不友好,简单的 insert . update . delete 还需我们添加 SQL 语句,在目前微服务的架构模式下,每个服务拥有自己的单独的数据库,单表的使用场景会越来越多,

Spring Boot 2.X(五):MyBatis 多数据源配置

前言 MyBatis 多数据源配置,最近在项目建设中,需要在原有系统上扩展一个新的业务模块,特意将数据库分库,以便减少复杂度.本文直接以简单的代码示例,如何对 MyBatis 多数据源配置. 准备 创建数据库 db_test SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for t_user -- -------------------------