在前面的文章中,我们对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. Android群英传知识点回顾——第十章:Android性能优化

    10.1 布局优化 10.1.1 Android UI渲染机制 10.1.2 避免Overdraw 10.1.3 优化布局层级 10.1.4 避免嵌套过多无用布局 10.1.5 Hierarchy V ...

  2. 51nod 1438:方阵与完全平方数

    1438 方阵与完全平方数 题目来源: mostleg 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题  收藏  关注 如果一个由正整数组成的n*n的方阵,满足以下 ...

  3. 洛谷 P1964 【mc生存】卖东西(多重背包)

    题目传送门 解题思路: 题目里有,多重背包. AC代码: #include<iostream> #include<cstdio> #include<map> usi ...

  4. 关于HackerRank的Day 8 的思考——input

    Day 8 主要是对字典的一些基本用法做操作. 题干大概是:给定一个 n ,建立一个包含 n 个人的电话簿,然后有一个查询功能.当然,很简单,但是在我对搜索词的输入时,它提示我:EOF when re ...

  5. iOS精美过度动画、视频会议、朋友圈、联系人检索、自定义聊天界面等源码

    iOS精选源码 iOS 精美过度动画源码 iOS简易聊天页面以及容联云IM自定义聊天页面的实现思路 自定义cell的列表视图实现:置顶.拖拽.多选.删除 SSSearcher仿微信搜索联系人,高亮搜索 ...

  6. SQL基础教程(第2版)第7章 集合运算:7-2 联结(以列为单位对表进行联结)

    第7章 集合运算:7-2 联结(以列为单位对表进行联结) ■联结的特定语法和过时语法 ● 联结( JOIN)就是将其他表中的列添加过来,进行“添加列”的集合运算.UNION是以行(纵向)为单位进行操作 ...

  7. SQL基础教程(第2版)第4章 数据更新:4-1 数据的插入(INSERT)

    第4章 数据更新:4-1 数据的插入(INSERT) ● 将列名和值用逗号隔开,分别括在()内,这种形式称为清单.● 对表中所有列进行INSERT操作时可以省略表名后的列清单.● 插入NULL时需要在 ...

  8. SQL基础教程(第2版)第3章 聚合与排序:3-1 对表进行聚合查询

    3-1 对表进行聚合查询 ● 使用聚合函数对表中的列进行计算合计值或者平均值等的汇总操作.● 通常,聚合函数会对NULL以外的对象进行汇总.但是只有COUNT函数例外,使用COUNT(*)可以查出包含 ...

  9. ansible-playbook权限提升多种方式

    ansible-playbook 可以方便快速的批量执行部署和运维任务,对于不同的场景和服务器,需要使用不同的权限提升方式. 最佳实现:为了提高playbook的兼容性,跟功能没有直接关系的权限提升脚 ...

  10. [RoarCTF 2019]Easy Calc-协议层攻击之HTTP请求走私

    0X01:什么是HTTP请求走私 HTTP请求走私属于协议层攻击,是服务器漏洞的一种. HTTP请求走私是一种干扰网站处理从一个或多个用户接收的HTTP请求序列的方式的技术.使攻击者可以绕过安全控制, ...