SpringBoot2.1(4)集成Mybatis、Druid及Druid应用监控

《回顾》

前三篇,看完以后,你的技能列表如下:

会搭建SpringBoot2 + Java11架构的项目

会基本配置

会启用日志

会使用Freemarker、Thymeleaf结合SpringBoot开发页面

会构建可用于生产的Jar包

 

这一篇,来解决最关键的一个问题,和数据库交互。

本文,以MySQL为例。

持久层框架:Mybatis

连接池:Druid

 

Mybatis,使用XML进行操作,

为什么不用注解方式?

因为XML可以自动生成。

 

一、Maven依赖

<dependency>
   <groupId>org.mybatis.spring.boot</groupId>
   <artifactId>mybatis-spring-boot-starter</artifactId>
   <version>1.3.2</version>
</dependency>
<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>druid-spring-boot-starter</artifactId>
   <version>1.1.10</version>
</dependency>

<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <scope>runtime</scope>
</dependency>

 

二、新建包

com.zhou.springbootz04.controller
com.zhou.springbootz04.entity
com.zhou.springbootz04.mapper
com.zhou.springbootz04.service
com.zhou.springbootz04.service.impl


resources/mapperxml

 

结构如下:

SpringBoot2.1(4)集成Mybatis、Druid及Druid应用监控

 

 

三、配置Springboot支持

##### 日志 #####
logging.level.root=info
# 打印sql日志
logging.level.com.zhou.springbootz04.mapper=debug
logging.file=/opt/logs/springbootz/springbootz.log

##### thymeleaf ####
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.cache=false
spring.thymeleaf.suffix=.html
spring.thymeleaf.mode=LEGACYHTML5

##### druid ####
# JDBC 配置(驱动类自动从url的mysql识别,数据源类型自动识别)
spring.datasource.druid.url=jdbc:mysql://localhost:3306/springbootz?useUnicode=true&characterEncoding=UTF8
spring.datasource.druid.username=root
spring.datasource.druid.password=root123
spring.datasource.druid.driver-class-name=com.mysql.jdbc.Driver
#连接池配置
spring.datasource.druid.initial-size=1
spring.datasource.druid.max-active=20
spring.datasource.druid.min-idle=1
spring.datasource.druid.max-wait=60000
spring.datasource.druid.filters=stat

##### druid 监控 ####
# WebStatFilter配置
spring.datasource.druid.web-stat-filter.enabled=true
spring.datasource.druid.web-stat-filter.url-pattern=/*
spring.datasource.druid.web-stat-filter.exclusions=*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*
spring.datasource.druid.web-stat-filter.session-stat-enable=false
spring.datasource.druid.web-stat-filter.session-stat-max-count=1000
spring.datasource.druid.web-stat-filter.principal-session-name=admin
spring.datasource.druid.web-stat-filter.principal-cookie-name=admin
spring.datasource.druid.web-stat-filter.profile-enable=true
# StatViewServlet配置
spring.datasource.druid.stat-view-servlet.enabled=true
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
spring.datasource.druid.stat-view-servlet.reset-enable=true
spring.datasource.druid.stat-view-servlet.login-username=admin
spring.datasource.druid.stat-view-servlet.login-password=admin

##### mybatis xml存放位置 #####
mybatis.mapper-locations=classpath:/mapperxml/*.xml

 

四、创建数据库及表

4.1、创建表

SQL:

CREATE TABLE `user` (
    `ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
    `USER_NAME` varchar(64) NOT NULL COMMENT '用户名',
    `USER_CODE` varchar(64) NOT NULL COMMENT '用户Code',
    `USER_DESC` varchar(255) DEFAULT NULL COMMENT '用户描述',
    `CREATE_TIME` datetime NOT NULL COMMENT '创建时间',
    `UPDATE_TIME` datetime NOT NULL COMMENT '更新时间',
    PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;

 

4.2、代码生成

日常,我们在开发中,Mybatis的实体及基本的insert、update、delete、select语句,不需要自己手动编写,使用工具生成即可。

4.2.1、生成工具

    公众号回复:automybatis

4.2.2、编辑「generator.xml」,下载到的文件中,有详细的注释及生成命令文档,请按照文档操作。

 

执行命令:

java -jar mybatis-generator-core-1.3.2.jar -configfile generator.xml -overwrite

 

SpringBoot2.1(4)集成Mybatis、Druid及Druid应用监控

 

如上图,命令执行成功。

进入文件夹查看内容:

SpringBoot2.1(4)集成Mybatis、Druid及Druid应用监控

 

4.2.3、将三个文件夹内的文件,copy到项目中对应的路径。

如图:

SpringBoot2.1(4)集成Mybatis、Druid及Druid应用监控

 

五、动手写代码

本文使用一个保存流程、一个查询流程来演示。

 

5.1新建文件

新建类:

com.zhou.springbootz04.controller.UserController.java

新建接口:

com.zhou.springbootz04.service.UserService.java

新建接口实现类:

com.zhou.springbootz04.service.impl.UserServiceImpl.java

新建html(Thymeleaf,不了解查看前篇文章):

templates/user.html

templates/user_detail.html

 

结构如下:

SpringBoot2.1(4)集成Mybatis、Druid及Druid应用监控

 

 

5.2 编写代码

如果您对Java WEB不太熟悉,强烈建议您从SpringBoot系列文章的第一篇看起。请查阅公众号,SpringBoot2目录。

5.2.1、 UserService 及 UserServiceImpl

接口:

public interface UserService {
    int insert(User record);
    User selectByPrimaryKey(Integer id);
}

 

实现:

@Service
public class UserServiceImpl implements UserService {
    @Resource
    private UserMapper userMapper;

    @Override
    public int insert(User record) {
        record.setCreateTime(new Date());
        record.setUpdateTime(new Date());
        userMapper.insert(record);
        return record.getId();
    }

    @Override
    public User selectByPrimaryKey(Integer id) {
        return userMapper.selectByPrimaryKey(id);
    }
}

 

@Service:将对象注入到Spring中。

@Resource:从Spring中获取实例,等同于@Autowired

 

5.2.2、UserController

@Controller
public class UserController {
    @Resource
    private UserService userService;
    // 首页
    @GetMapping("")
    public String index(){
        return "user";
    }
    // 保存
    @PostMapping("/save")
    public String save(User user){
        return "redirect:/user_detail/" + userService.insert(user);
    }
    // 获取用户信息
    @GetMapping("/user_detail/{id}")
    public ModelAndView detail(@PathVariable int id){
        var modelAndView = new ModelAndView("user_detail");
        modelAndView.addObject("user",userService.selectByPrimaryKey(id));
        return modelAndView;
    }
}

 

5.2.3、Springbootz04Application

 

启动类,需要增加对Mybatis接口类的扫描

如下(中间那行):

@SpringBootApplication
@MapperScan("com.zhou.springbootz04.mapper")
public class Springbootz04Application {

 

5.2.4、user.html 和 user_detail.html

 

user.html 增加form表单

<form method="post" action="/save" th:action="@{/save}">
    唯一编号:<input type="text" name="id"><br>
    用户名:<input type="text" name="userName"><br>
    用户编码:<input type="text" name="userCode"><br>
    用户介绍:<input type="text" name="userDesc"><br>
    <button type="submit">提交</button>
</form>

user_detail.html 增加展示代码

<div>
    唯一代码:<span th:text="${user.id}"></span><br>
    用户名:<span th:text="${user.userName}"></span><br>
    用户编码:<span th:text="${user.userCode}"></span><br>
    用户介绍:<span th:text="${user.userDesc}"></span><br>
</div>

 

运行程序,并访问页面。

 

 

  • 保存用户

SpringBoot2.1(4)集成Mybatis、Druid及Druid应用监控

 

 

  • 查询用户

 

SpringBoot2.1(4)集成Mybatis、Druid及Druid应用监控

 

  • 数据库数据

 

SpringBoot2.1(4)集成Mybatis、Druid及Druid应用监控

 

 

六、Druid监控

 

druid自带一个监控平台,可以对应用URI访问情况,SQL执行情况,以及应用的基本状态进行监控。

 

访问:

http://localhost:8080/druid

 

SpringBoot2.1(4)集成Mybatis、Druid及Druid应用监控

 

用户名及密码,就是我们在“application.properties”中,配置的login-username、login-password。

值:admin/admin

 

登陆后,可以看到如下界面。均为中文菜单,比较简单,我就不过多的浪费口舌,自己试着点一下,印象更深刻。

SpringBoot2.1(4)集成Mybatis、Druid及Druid应用监控

SpringBoot2.1(4)集成Mybatis、Druid及Druid应用监控

 

七、获取源码

SpringBoot2.1系列的的文章,每一篇都会对应一个单独的项目。

所有项目源码,均托管在Gitee,并会持续更新。

SpringBoot2.1.1 + Java11 系列文章演示代码,公众号回复:springbootz

SpringBoot2.1.1 + Elasticsearch6.5.3,公众号回复:es6

SpringBoot2.1.0 + Solr7.5,公众号回复:solr

Java11演示代码,公众号回复:Java11

 

博客内所有文章,每周从公众号同步一次。

文章源码均可从公众号获取。

如果您可以关注下,那就好了。

SpringBoot2.1(4)集成Mybatis、Druid及Druid应用监控