druid+mybaits简单集成
在前面的文章中,我们对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简单集成的更多相关文章
- 简单集成高大上的ImagePicker无标题文章
简单集成高大上的ImagePicker无标题文章 现在是个项目就要有图片上传所以下面介绍一下简单高端的图片选择器 感谢读者的细心发现bug,最近bug已经修复(github更新)所以对文章部分内容 ...
- tp5对接支付宝支付简单集成
对于每个刚开始工作的新手来说,无论支付宝支付还是微信支付都是跑不掉的一个小门槛. 在加上本人比较技术比较渣(比较懒导致的),不太喜欢引用那么大的SDK,于是就简单集成了一下支付宝的支付. 但也只是只有 ...
- Springboot简单集成ActiveMQ
Springboot简单集成ActiveMQ 消息发送者的实现 pom.xml添加依赖 <dependency> <groupId>org.springframework.bo ...
- 超简单集成ML kit 实现听写单词播报
背景 相信我们大家在刚开始学习一门语言的时候都有过听写,现在的小学生学语文的时候一项重要的课后作业就是听写课文中的生词,很多家长们都有这方面的经历.不过一方面这种读单词的动作相对简单,另一方面家长 ...
- SpringBoot学习之整合Druid的简单应用
一.Druid介绍 Druid简介 Druid是目前Java语言中最好的数据库连接池之一.结合了 C3P0.DBCP 等 DB 池的优点,同时加入了日志监控.Druid 是一个分布式的.支持实时多维 ...
- 超简单集成华为HMS ML Kit文本识别SDK,一键实现账单号自动录入
前言 在之前的文章<超简单集成华为HMS Core MLKit通用卡证识别SDK,一键实现各种卡绑定>中我们给大家介绍了华为HMS ML Kit通用卡证识别技术是如何通过拍照自动识别卡 ...
- .netcore简单集成swagger
为什么要集成Swagger 在前后端分离比较普遍的当下,当后端开发完接口后,还需把接口的信息.参数说明.返回参数等信息编写好提供给调用者.对于对外开放接口需提供说明文档是必不可少的.但是对于内部开发, ...
- 超简单集成 HMS ML Kit 实现最大脸微笑抓拍
前言 如果大家对 HMS ML Kit 人脸检测功能有所了解,相信已经动手调用我们提供的接口编写自己的 APP 啦.目前就有小伙伴在调用接口的过程中反馈,不太清楚 HMS ML Kit 文档中的 ML ...
- smartroute简单集成集群聊天通讯
在制定一个规模比较多大的聊天应用时,往往需要制定部署多个应用服务,其一可以保障服务的可靠性,其二可以增加用户负载量.但制定这样一种应用体系是一件复杂的事情,毕竟同一群体的用户实际上会在不同的服务器接入 ...
随机推荐
- Oracle 中多个字段显示成一列
SELECT COALESCE(A,B,C,'NA') FROM XXXXX --判断A若为空则取B,B为空这取C,C为空则取默认值'NA'
- [ACTF2020 新生赛]Include
0x00 知识点 本地文件包含 ?file=php://filter/read/convert.base64-encode/resource=index.php ?file=php://filter/ ...
- 浅谈无参数RCE
0x00 前言 这几天做了几道无参数RCE的题目,这里来总结一下,以后忘了也方便再捡起来. 首先先来解释一下什么是无参数RCE: 形式: if(';' === preg_replace('/[^\W] ...
- 第21章—websocket
spring boot 系列学习记录:http://www.cnblogs.com/jinxiaohang/p/8111057.html 码云源码地址:https://gitee.com/jinxia ...
- DRF项目之JWT认证方式的简介及使用
什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点 ...
- java 继承条件下的构造方法调用
运行 TestInherits.java示例,观察输出,注意总结父类与子类之间构造方法的调用关系修改Parent构造方法的代码,显式调用GrandParent的另一个构造函数,注意这句调用代码是否是第 ...
- codeigniter框架开发技巧
codeigniter框架开发技巧 来源:未知 时间:2014-10-20 11:36 阅读数:171 作者:xbdadmin [导读] (1)自动加载modelsphp5风格 使用这个 ...
- WOJ 1546 Maze 图论上的状态压缩DP
http://acm.whu.edu.cn/land/problem/detail?problem_id=1546 这个题目还是聪哥教的方法过的 首先搜索是必须的,而且通过搜索来缩点,这些应该要想到, ...
- i春秋-web-爆破-1
题目内容:flag就在某六位变量中. 题目 include "flag.php"; $a = @$_REQUEST['hello']; if(!preg_match('/^\w*$ ...
- PHP核心配置详解
基本配置-语法 1:大小写敏感 directive = value 2:运算符 | & ~ ! 3:空值的表达方式 foo = ; foo = none; foo = "none&q ...