在前面的文章中,我们对springboot开发中一些常用的框架进行了集成,但是发现还是存在一些问题,比如druid还需要比较长的固有配置,实际上druid官方是提供了相关的starters包的,内部采用默认配置。

什么是springboot的starters包?

SpringBoot Starters是基于约定优于配置的理念来设计的,像之前的集成中还是有一定的配置量的,当然我们只是用Java代码在进行配置,SpringBoot Starters中有两个核心组件,一个是自动配置代码,一个是自动配置模块和其它有用的相关依赖。

这也就意味着,我们只要引入某个Starters就可以使相关框架拥有默认配置的能力,除非我们需要特定配置,一般情况下我们只需要少部分配置或者不配置就可以使用相关的组件了。

Druid是提供了相关的Starters,我们只需要引入Starters到pom.xml就可以直接使用了

通过Starters包集成Druid

这次我们用idea内部的构建工具来创建一个SpringBoot项目



这个时候我们已经完成了一大半工作了,接着我们在pom.xml引入druid的Starters

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

数据库我们使用MySQL的所以在引入一个MySQL的连接驱动

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

接着配置一下application.yml就基本完成了

spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://localhost:3306/demo?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
druid:
initial-size: 3
min-idle: 3
max-active: 10
max-wait: 60000
stat-view-servlet:
login-username: admin
login-password: admin
filter:
stat:
log-slow-sql: true
slow-sql-millis: 2000

我们直接启动项目

访问http://localhost:8080/druid/login.html地址,就可以看见druid的监控界面了

然后输入配置文件中配置的用户名和密码进行登录admin



可以看到我们项目的基本信息以及数据源。

这样比上次的druid集成要简单很多对吧

我们在进一步集成mybatis

集成mybatis

引入mybatis

先引入xml节点

<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>

为了方便测试先建个表

/*
Navicat Premium Data Transfer Source Server : localhost_3306
Source Server Type : MySQL
Source Server Version : 50643
Source Host : localhost:3306
Source Schema : demo Target Server Type : MySQL
Target Server Version : 50643
File Encoding : 65001 Date: 18/03/2019 14:20:08
*/ SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0; ---
-- Table structure for test_user
--- DROP TABLE IF EXISTS test_user;
CREATE TABLE test_user (
id int(255) NOT NULL AUTO_INCREMENT COMMENT '主键',
user_name varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户名',
password varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '密码',
PRIMARY KEY (id) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; ---
-- Records of test_user
--- INSERT INTO test_user VALUES (1, '用户', '123456');
INSERT INTO test_user VALUES (2, '胡汉三', 'hhs123456');
INSERT INTO test_user VALUES (3, '王五', '123456');
INSERT INTO test_user VALUES (4, 'test', 'test'); SET FOREIGN_KEY_CHECKS = 1;

这个表是建立在我配置文件指定的数据库下的,请注意一下

配置mybatis

mybatis:
mapper-locations: classpath:mappers/*/Mapper.xml
type-aliases-package: com.ccsert.spdruid.*.model
configuration:
map-underscore-to-camel-case: true logging:
file: logs/mass.log
level:
org.springframework: info
com.ccsert: DEBUG

配置一下mybatis和log日志以及sql打印

然后在resources下建立mappers用来存放mapper,xml文件,这些步骤其实和上次的集成是一样的基本没区别

接着建立一个test包

然后在test包建立mapper,service,model,controller四个包准备工作基本做完了

mybatis使用

开始使用,先在model下建立TestUser类

emmm用一下lombok,引入一下

关于lombok,idea支持需要安装相应的插件

按Ctrl+Alt+S,唤出设置

点击Plugins搜索Lombok

然后安装Lombok Plugin插件,接着重启idea,这样idea就支持lombok注解了。(上次没有讲,真是抱歉)

接着刚才

package com.ccsert.spdruid.test.model;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString; @Getter@Setter@ToString
public class TestUser {
private Integer Id;
private String userName;
private String password;
}

然后我们写mapper

在mapper建立一个TestUserMapper接口

package com.ccsert.spdruid.test.mapper;

import com.ccsert.spdruid.test.model.TestUser;
import org.apache.ibatis.annotations.Mapper; import java.util.List; @Mapper
public interface TestUserMapper { List<TestUser> getall(); TestUser getById(Integer id); int save(TestUser testUser); }

然后我们写Service层

在service包下建立UserTestService接口

这里就写一个根据id查用户和查询所有以及新增用户三个方法

package com.ccsert.spdruid.test.service;

import com.ccsert.spdruid.test.model.TestUser;

import java.util.List;

public interface TestUserService {
List<TestUser> getall();
TestUser getById(Integer id);
int save(TestUser testUser);
}

然后在service下建一个impl包,在impl包下创建一个TestUserService的实现类TestUserServiceImpl

package com.ccsert.spdruid.test.service.impl;

import com.ccsert.spdruid.test.mapper.TestUserMapper;
import com.ccsert.spdruid.test.model.TestUser;
import com.ccsert.spdruid.test.service.TestUserService;
import org.springframework.stereotype.Service; import javax.annotation.Resource;
import java.util.List; @Service
public class TestUserServiceImpl implements TestUserService {
@Resource
private TestUserMapper testUserMapper; @Override
public List<TestUser> getall() {
return testUserMapper.getall();
} @Override
public TestUser getById(Integer id) {
return testUserMapper.getById(id);
} @Override
public int save(TestUser testUser) {
return testUserMapper.save(testUser);
} }

接下来就是写xml了,在mappers目录下建立一个TestUser目录,然后在该目录下建立一个TestUserMapper.xml文件

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.ccsert.spdruid.test.mapper.TestUserMapper" >
<resultMap id="BaseResultMap" type="com.ccsert.spdruid.test.model.TestUser" >
<id column="id" property="Id" />
<result column="user_name" property="userName"/>
<result column="password" property="password" />
</resultMap> <select id="getall" resultMap="BaseResultMap">
SELECT
id,user_name,password
FROM
test_user
</select> <select id="getById" parameterType="Integer" resultMap="BaseResultMap">
SELECT
id,user_name,password
FROM
test_user
WHERE id=#{id}
</select> <insert id="insert" parameterType="com.ccsert.spdruid.test.model.TestUser" > INSERT INTO
save
(user_name,password)
VALUES
(#{user_name}, #{password})
</insert>
</mapper>

建立TestUserController类

package com.ccsert.spdruid.test.controller;

import com.ccsert.spdruid.test.model.TestUser;
import com.ccsert.spdruid.test.service.TestUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController; import java.util.List; @RestController
public class TestUserController {
@Autowired
private TestUserService testUserService; @GetMapping("/getall")
public List<TestUser> getAll(){
return testUserService.getall();
} @GetMapping("/getById/{id}")
public TestUser getById(@PathVariable Integer id){
return testUserService.getById(id);
} @PostMapping("/save")
public int save(TestUser testUser){
return testUserService.save(testUser);
} }

这里用到RESTful api的设计风格使请求地址看起来更美观

测试使用

启动项目然后用Restlet Client - REST API Testing插件测试一下,Restlet Client - REST API Testing是一款chrome的扩展插件,功能类似于postman,建立大家可以装一个。需要翻墙,到时候我会把相关插件工具发在群里。

先测试getall,这里geitall必须使用get请求



然后接着是getById,这里传参的时候只需要把id放在请求路径后面就可以了,比如getById/1,同样也必须是get请求



接着是save,save必须是post请求,保存用户成功后会返回一个条数



因为id是自增长所以不需要传入,去数据库查看一下是否有该数据



可以看到该数据已经成功插入了。

druid+mybaits简单集成的更多相关文章

  1. 简单集成高大上的ImagePicker无标题文章

    简单集成高大上的ImagePicker无标题文章   现在是个项目就要有图片上传所以下面介绍一下简单高端的图片选择器 感谢读者的细心发现bug,最近bug已经修复(github更新)所以对文章部分内容 ...

  2. tp5对接支付宝支付简单集成

    对于每个刚开始工作的新手来说,无论支付宝支付还是微信支付都是跑不掉的一个小门槛. 在加上本人比较技术比较渣(比较懒导致的),不太喜欢引用那么大的SDK,于是就简单集成了一下支付宝的支付. 但也只是只有 ...

  3. Springboot简单集成ActiveMQ

    Springboot简单集成ActiveMQ 消息发送者的实现 pom.xml添加依赖 <dependency> <groupId>org.springframework.bo ...

  4. 超简单集成ML kit 实现听写单词播报

    背景   相信我们大家在刚开始学习一门语言的时候都有过听写,现在的小学生学语文的时候一项重要的课后作业就是听写课文中的生词,很多家长们都有这方面的经历.不过一方面这种读单词的动作相对简单,另一方面家长 ...

  5. SpringBoot学习之整合Druid的简单应用

    一.Druid介绍 Druid简介 Druid是目前Java语言中最好的数据库连接池之一.结合了 C3P0.DBCP 等 DB 池的优点,同时加入了日志监控.Druid 是一个分布式的.支持实时多维 ...

  6. 超简单集成华为HMS ML Kit文本识别SDK,一键实现账单号自动录入

    前言   在之前的文章<超简单集成华为HMS Core MLKit通用卡证识别SDK,一键实现各种卡绑定>中我们给大家介绍了华为HMS ML Kit通用卡证识别技术是如何通过拍照自动识别卡 ...

  7. .netcore简单集成swagger

    为什么要集成Swagger 在前后端分离比较普遍的当下,当后端开发完接口后,还需把接口的信息.参数说明.返回参数等信息编写好提供给调用者.对于对外开放接口需提供说明文档是必不可少的.但是对于内部开发, ...

  8. 超简单集成 HMS ML Kit 实现最大脸微笑抓拍

    前言 如果大家对 HMS ML Kit 人脸检测功能有所了解,相信已经动手调用我们提供的接口编写自己的 APP 啦.目前就有小伙伴在调用接口的过程中反馈,不太清楚 HMS ML Kit 文档中的 ML ...

  9. smartroute简单集成集群聊天通讯

    在制定一个规模比较多大的聊天应用时,往往需要制定部署多个应用服务,其一可以保障服务的可靠性,其二可以增加用户负载量.但制定这样一种应用体系是一件复杂的事情,毕竟同一群体的用户实际上会在不同的服务器接入 ...

随机推荐

  1. 使用navicat连接mysql8.0.12版本 出现client does not support。。。解决办法

    navicat版本的问题 出现连接失败的原因:mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password ...

  2. 模块化CommonJs规范 part1

    CommonJS规范 来自<JavaScript 标准参考教程(alpha)>,by 阮一峰 1.概述 Node 应用由模块组成,采用 CommonJS 模块规范. 每个文件就是一个模块, ...

  3. 7206VXR系列板卡简介(转)

    原文链接:https://www.it610.com/article/3116409.htm作者:hjw2011 ATM板卡介绍 板卡PA-A6-OC3MM,PA-A6-OC3SMI,PA-A6-OC ...

  4. 汪慧和201771010123《面向对象程序设计(Java)》第三周学习总结

    1.实验目的与要求 (1)进一步掌握Eclipse集成开发环境下java程序开发基本步骤: (2)熟悉PTA平台线上测试环境: (3)掌握Java语言构造基本程序语法知识(ch1-ch3): (4)利 ...

  5. [转帖西部数据的Zonefs将会登陆Linux 5.6内核]

    西部数据的Zonefs将会登陆Linux 5.6内核 https://www.cnbeta.com/articles/tech/948875.htm 据说SMR 能够提高25%的存储密度 但是会造成严 ...

  6. MySQL--InnoDB 体系架构

    InnoDB 体系架构 后台线程 Master Thread Master Thread 是一个非常核心的后台线程,主要负责将缓冲池中的数据异步刷新到磁盘,保证数据的一致性,包括脏页的刷新.合并插入缓 ...

  7. bugs开发异常解决方法

    1.      前提 第一层:遇到异常首先必须告诉自己,冷静,不要慌.(一看到Bug就心慌,那么就不能释放必杀技) 2.      入门级 第二层:遇到Bug,第一潜意识看输出异常的信息的(控制台输出 ...

  8. EXCEL启动慢

    启动太慢,一般是加载项的问题. 1.点击文件-EXCEL选项 2. 找到加载项,一般是COM加载项 3.选择com加载项 4.然后我出现了无法更改的情况,于是,我做了以下调整,进入office安装目录 ...

  9. [Algo] 131. Deep Copy Linked List With Random Pointer

    Each of the nodes in the linked list has another pointer pointing to a random node in the list or nu ...

  10. token获取在controller层中

    集合判断是否为空 注意:token获取在controller层中,token中存的所有数据都要在controller中获取 在自己的接口里调用别的接口需要判断一下返回值是否为空