Why mybatis?

mybatis提供了ORM功能,相比于其他ORM框架,其需要编写更多的sql,也给了我们编写特殊/复杂sql和进行sql优化的机会。

Why druid?

Druid是阿里巴巴开发的号称为监控而生的数据库连接池,Druid是目前最好的数据库连接池。 在功能、性能、扩展性方面,都超过其他数据库连接池,同时加入了日志监控, 可以很好的监控DB池连接和SQL的执行情况。

Why tk.mybatis?

tk.mybatis是github上一个开源的组件,封装mybatis,提供通用Mapper封装了普通的增删改查和example操作,使我们不用再每个业务单独开发增删改查等的样板代码。

1.maven依赖

<!-- jdbc -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency> <!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency> <!--tk.mybatis 封装了mybatis-->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>1.1.2</version>
</dependency> <!--pagehelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency> <!--druid-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.11</version>
</dependency>

  

2.配置

spring:
application:
name: monocase-framework # 应用名称
jackson:
date-format: yyyy-MM-dd HH:mm:ss # 日期格式
datasource:
druid: # 连接池别名
url: jdbc:mysql://${MYSQL_HOST:192.168.1.200}:${MYSQL_PORT:3306}/zhya-monocase-framework?useUnicode=true&characterEncoding=utf8
username: root
password: root@123
type: com.alibaba.druid.pool.DruidDataSource # 连接池类型
driver-class-name: com.mysql.jdbc.Driver
poolPreparedStatements: true
maxOpenPreparedStatements: 100
maxActive: 100
maxWait: 5000 mybatis:
basepackage: com.zhya.mapper
xmlLocation: classpath:mapper/**/*.xml
mapper-locations: "classpath*:mapper/*.xml"
# config-location: classpath:mybatis-config.xml
configuration:
map-underscore-to-camel-case: true # 下划线转驼峰 # 分页配置
pagehelper:
helper-dialect: mysql
reasonable: true
support-methods-arguments: true
params: count=countSql logging:
level:
# tk.mybatis: DEBUG
com.zhya: DEBUG # 输出sql日志

  

3.druid和mapper配置

package com.zhya.config;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary; /**
* druidl连接池配置
*
* @author: zhangyang
* @create: 2018/11/21 9:48
**/
@Configuration
public class DataSourceConfig {
@Primary
@Bean(name = "myDataSource")
@ConfigurationProperties("spring.datasource.druid")
public DruidDataSource dataSource() {
return new DruidDataSource();
}
}
package com.zhya;

import lombok.extern.slf4j.Slf4j;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.transaction.annotation.EnableTransactionManagement; /**
* 启动类
*
* @Author zhangyang
* @Date 下午 8:23 2018/11/20 0020
**/
@Slf4j
// 开启注解驱动的事务管理功能
@EnableTransactionManagement(proxyTargetClass = true)
// 扫描mapper
@MapperScan(basePackages = "com.zhya.mapper")
// 使用druid data source,排除默认的datasource
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class MonocaseFrameworkApplication {
public static void main(String[] args) {
SpringApplication.run(MonocaseFrameworkApplication.class, args);
log.info("MonocaseFrameworkApplication started......");
}
}

  

4.使用tk.mybatis构造基础架构

如上图:

BaseEntity是基础实体,提供通用的字段如id,add_date等;

SysUser是普通业务实体,继承BaseEntity,扩展业务字段;

IBaseService使用继承自BaseEntity的泛型,来规定通用的增删改查接口;

AbstractBaseService继承IBaseService接口,并使用Mapper根据Entity类型操作对应的表;

SysUserService实现ISysUserService接口,继承AbstractBaseService抽象类,获得通用数据库操作的功能;

BaseController通过实现了IBaseService的接口和Entity类型,调用业务逻辑。

spring-boot集成4:集成mybatis,druid和tk.mybatis的更多相关文章

  1. 14、Spring Boot 2.x 集成 Druid 数据源

    14.Spring Boot 2.x 集成 Druid 数据源 完整源码: Spring-Boot-Demos

  2. 6、Spring Boot 2.x 集成 MyBatis

    1.6 Spring Boot 2.x 集成 MyBatis 简介 详细介绍如何在Spring Boot中整合MyBatis,并通过注解方式实现映射. 完整源码: 1.6.1 创建 spring-bo ...

  3. spring boot rest 接口集成 spring security(2) - JWT配置

    Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...

  4. spring boot rest 接口集成 spring security(1) - 最简配置

    Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...

  5. 7、Spring Boot 2.x 集成 Redis

    1.7 Spring Boot 2.x 集成 Redis 简介 继续上篇的MyBatis操作,详细介绍在Spring Boot中使用RedisCacheManager作为缓存管理器,集成业务于一体. ...

  6. spring boot / cloud (三) 集成springfox-swagger2构建在线API文档

    spring boot / cloud (三) 集成springfox-swagger2构建在线API文档 前言 不能同步更新API文档会有什么问题? 理想情况下,为所开发的服务编写接口文档,能提高与 ...

  7. Spring Boot HikariCP 一 ——集成多数据源

    其实这里介绍的东西主要是参考的另外一篇文章,数据库读写分离的. 参考文章就把链接贴出来,里面有那位的代码,简单明了https://gitee.com/comven/dynamic-datasource ...

  8. Spring Boot系列——如何集成Log4j2

    上篇<Spring Boot系列--日志配置>介绍了Spring Boot如何进行日志配置,日志系统用的是Spring Boot默认的LogBack. 事实上,除了使用默认的LogBack ...

  9. 【ELK】4.spring boot 2.X集成ES spring-data-ES 进行CRUD操作 完整版+kibana管理ES的index操作

    spring boot 2.X集成ES 进行CRUD操作  完整版 内容包括: ============================================================ ...

  10. 15、Spring Boot 2.x 集成 Swagger UI

    1.15.Spring Boot 2.x 集成 Swagger UI 完整源码: Spring-Boot-Demos 1.15.1 pom文件添加swagger包 <swagger2.versi ...

随机推荐

  1. URLConnection类的使用

    URLConnection类概述 URLConnection是个抽象类,它有两个直接子类分别是HttpURLConnection和JarURLConnection,它是基于Http协议的.另外一个重要 ...

  2. Mybatis映射文件中数据库表列名称和POJO成员域的联系

    下面是Mybatis的SQL映射文件. <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ma ...

  3. php类知识----特别用法

    spl_autoload_register注册 <?php #spl_autoload_register-----这个例子是用来打印实例化类的类名 function thereisagameof ...

  4. SQL CASE Syntax

    CASE case_value WHEN when_value THEN statement_list [WHEN when_value THEN statement_list] ... [ELSE ...

  5. 【Python之路】特别篇--Python文件操作

    文件操作 open函数,该函数用于文件处理 操作文件时,一般需要经历如下步骤: (1)打开文件 (2)操作文件 一.打开文件 文件句柄 = open('文件路径', '模式','编码') 打开文件时, ...

  6. 在py文件中运行flask cli命令

    主要是打包成exe之后,用于运行命令行. 命令行是 @app.cli.command() def mock(): ... 这样定义的 本来是用flask mock 这样方式运行的 打包后,希望用 ap ...

  7. TNS-12560: TNS: 协议适配器错误

    TNS-12560: TNS: 协议适配器错误   Microsoft Windows [版本 5.2.3790] (C) 版权所有 1985-2003 Microsoft Corp. C:\Docu ...

  8. Into Blocks (easy version)

    G1 - Into Blocks (easy version) 参考:Codeforces Round #584 - Dasha Code Championship - Elimination Rou ...

  9. 我要学习Python

    现在是2017年6月7号北京时间20点57分,不知道从什么时候我想学习Python了,我现在做的工作是运维工程师,为了成为一个优秀点的运维人员,也为了以后能有更好的发展机会,我想学习一下Python, ...

  10. 为什么还需要学习TypeScript

    开篇 TypeScript 是由 C#语言的创始人 Anders Hejlsberg 设计的一种编程语言,设计的初衷就是为了帮助 JavaScript 的开发人员能像类似高级语言c#,Java那样编写 ...