在前面的文章中,我们对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. 快速幂的类似问题(51Nod 1008 N的阶乘 mod P)

    下面我们来看一个容易让人蒙圈的问题:N的阶乘 mod P. 51Nod 1008 N的阶乘 mod P 看到这个可能有的人会想起快速幂,快速幂是N的M次方 mod P,这里可能你就要说你不会做了,其实 ...

  2. Android进阶——多线程系列之wait、notify、sleep、join、yield、synchronized关键字、ReentrantLock锁

    多线程一直是初学者最困惑的地方,每次看到一篇文章,觉得很有难度,就马上叉掉,不看了,我以前也是这样过来的.后来,我发现这样的态度不行,知难而退,永远进步不了.于是,我狠下心来看完别人的博客,尽管很难但 ...

  3. CF1217B Zmei Gorynich

    You are fighting with Zmei Gorynich — a ferocious monster from Slavic myths, a huge dragon-like rept ...

  4. Sequence Models Week 2 Emojify

    Emojify! Welcome to the second assignment of Week 2. You are going to use word vector representation ...

  5. sql优化从300秒到7秒

    原始sql select b.jd 街道,b.rglm 楼宇,zzrl 楼宇编号,count(oname) 入楼企业总数, (select count(oname) from ${tablename} ...

  6. Spring最基础使用1

    1. 导入Spring等jar包 2. 配置文件 applicationContext.xml <?xml version="1.0" encoding="UTF- ...

  7. Spring中@Value("${}"))取不到值的几种情况

    https://blog.csdn.net/dh12313012/article/details/84661169 1. spring组件重写构造方法,在构造方法中引用@Value为null 由于sp ...

  8. 吴裕雄--天生自然MySQL学习笔记:MySQL 运算符

    要介绍 MySQL 的运算符及运算符的优先级. MySQL 主要有以下几种运算符: 算术运算符 比较运算符 逻辑运算符 位运算符 算术运算符 MySQL 支持的算术运算符包括: 在除法运算和模运算中, ...

  9. Golang的学习方法

  10. Python笔记_第四篇_高阶编程_进程、线程、协程_1.进程

    1. 多任务原理: 现代操作系统,像win,max os x,linux,unix等都支持多任务. * 什么叫做多任务? 操作系统可以同时运行多个任务. * 单核CPU实现多任务原理? 操作系统轮流让 ...