springboot2整合mysql5_SpringBoot2.X (二十五):SpringBoot整合 Mybatis + MySQL CURD 示例

话不多数,直接开始撸代码…

工程结构图

开始之前先放张工程结构图

d194d2f8566f8aa97a1ffd9e37e7008d.png

1、maven 依赖:

org.springframework.boot

spring-boot-starter-web

org.mybatis.spring.boot

mybatis-spring-boot-starter

1.3.2

com.github.pagehelper

pagehelper-spring-boot-starter

1.2.9

com.alibaba

druid-spring-boot-starter

1.1.9

org.projectlombok

lombok

mysql

mysql-connector-java

runtime

org.springframework.boot

spring-boot-starter-test

test

2、yml 配置文件:

spring:

application:

name: mybatis-curd

datasource:

username: root

password: root

url: jdbc:mysql://localhost:3306/test?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&autoReconnect=true

continue-on-error: true

sql-script-encoding: UTF-8

driver-class-name: com.mysql.jdbc.Driver

type: com.alibaba.druid.pool.DruidDataSource

druid:

initial-size: 5

min-idle: 5

max-active: 20

max-wait: 60000

# 间隔多久进行一次检测,检测需要关闭的空闲连接

time-between-eviction-runs-millis: 60000

# 一个连接在池中最小生存的时间

min-evictable-idle-time-millis: 300000

validation-query: SELECT 1 FROM DUAL

test-while-idle: true

test-on-borrow: false

test-on-return: false

pool-prepared-statements: true

max-pool-prepared-statement-per-connection-size: 20

connect-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

use-global-data-source-stat: true

filters: stat,wall,log4j2

mybatis:

type-aliases-package: com.fxbin.mybaits.*

configuration:

map-underscore-to-camel-case: true

# 打印sql, 方便调试

log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

use-generated-keys: true

default-statement-timeout: 60

default-fetch-size: 100

3、核心代码:

User.java

package com.fxbin.mybatis.bean;

import lombok.Data;

import java.util.Date;

/**

* created with IntelliJ IDEA.

* author: fxbin

* date: 2018/10/21

* time: 5:59

* version: 1.0

* description:

*/

@Data

public class User {

/**

* 主键ID

*/

private Integer id;

/**

* 用户名

*/

private String username;

/**

* 密码

*/

private String password;

/**

* 创建时间

*/

private Date gmtCreate;

/**

* 修改时间

*/

private Date gmtModified;

}

MyBatisConfig.java

package com.fxbin.mybatis.config;

import com.github.pagehelper.PageHelper;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import java.util.Properties;

/**

* created with IntelliJ IDEA.

* author: fxbin

* date: 2018/10/21

* time: 11:33

* version: 1.0

* description: MyBatis 分页插件配置

*/

@Configuration

public class MyBatisConfig {

@Bean

public PageHelper pageHelper(){

PageHelper pageHelper = new PageHelper();

Properties p = new Properties();

// 设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用

p.setProperty("offsetAsPageNum","true");

//设置为true时,使用RowBounds分页会进行count查询

p.setProperty("rowBoundsWithCount","true");

p.setProperty("reasonable","true");

pageHelper.setProperties(p);

return pageHelper;

}

}

UserController.java

package com.fxbin.mybatis.controller;

import com.fasterxml.jackson.databind.ObjectMapper;

import com.fxbin.mybatis.bean.User;

import com.fxbin.mybatis.service.UserService;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

/**

* created with IntelliJ IDEA.

* author: fxbin

* date: 2018/10/21

* time: 5:53

* version: 1.0

* description:

*/

@RestController

public class UserController {

@Resource

private UserService userService;

/**

* 查询全部

* @param page

* @param size

* @return

*/

@RequestMapping("/listAll")

public Object listAll(@RequestParam(value = "page",defaultValue = "1")int page,

@RequestParam(value = "size",defaultValue = "10")int size){

return userService.listAll(page, size);

}

/**

* 添加数据

* @param user

* @return

*/

@RequestMapping("/insert")

public int insert (User user){

return userService.insert(user);

}

/**

* 删除

* @param userId

* @return

*/

@RequestMapping("/remove")

public int remove(Integer userId){

return userService.remove(userId);

}

/**

* 修改

* @param user

* @return

*/

@RequestMapping("/update")

public int update(User user){

return userService.update(user);

}

}

UserService.java

package com.fxbin.mybatis.service;

import com.fxbin.mybatis.bean.User;

import java.util.List;

/**

* created with IntelliJ IDEA.

* author: fxbin

* date: 2018/10/21

* time: 5:54

* version: 1.0

* description:

*/

public interface UserService {

Object listAll(int page, int size);

int insert(User user);

int remove(Integer userId);

int update(User user);

}

UserServiceImpl.java

package com.fxbin.mybatis.service.impl;

import com.fxbin.mybatis.bean.User;

import com.fxbin.mybatis.mapper.UserMapper;

import com.fxbin.mybatis.service.UserService;

import com.github.pagehelper.PageHelper;

import com.github.pagehelper.PageInfo;

import org.springframework.stereotype.Service;

import javax.annotation.Resource;

import java.util.List;

/**

* created with IntelliJ IDEA.

* author: fxbin

* date: 2018/10/21

* time: 5:54

* version: 1.0

* description:

*/

@Service

public class UserServiceImpl implements UserService {

@Resource

private UserMapper userMapper;

@Override

public Object listAll(int page, int size) {

PageHelper.startPage(page, size);

List userList = userMapper.listAll();

PageInfo pageInfo = new PageInfo<>(userList);

return pageInfo;

}

@Override

public int insert(User user) {

return userMapper.insert(user);

}

@Override

public int remove(Integer userId) {

return userMapper.remove(userId);

}

@Override

public int update(User user) {

return userMapper.update(user);

}

}

UserMapper.java

package com.fxbin.mybatis.mapper;

import com.fxbin.mybatis.bean.User;

import org.apache.ibatis.annotations.*;

import java.util.List;

/**

* created with IntelliJ IDEA.

* author: fxbin

* date: 2018/10/21

* time: 5:55

* version: 1.0

* description:

*/

@Mapper

public interface UserMapper {

@Select({

"select * from user"

})

List listAll();

@Insert({

"insert into user(`username`, `password`) values(#{username}, #{password})"

})

int insert(User user);

@Delete({

"delete from user where id = #{userId}"

})

int remove(Integer userId);

@Update({

"update user set username = #{username}, password = #{password} where id = #{id}"

})

int update(User user);

}

4、测试

1)查询

55be579d3179184ddc2cfe0c83614b75.png

2)添加

abad06aea740094a76db97b696f09ec6.png

查看数据库记录,进一步验证,确实已经新增了一条记录

c52c8347df9360088fa1f1d71e2c3667.png

3)移除

b87a3d48e7b4b280f071d7143ade31b9.png

查看数据库,id 为1 的记录已经成功移除

daca3f01efe3d723a7683f2caa15dd27.png

4)修改

我们修改之前新增的id为13 的记录,username 修改为 “修改”,password 修改为 “222”

d3866ce97ad159b1e2e954196ecae9ce.png

查看数据库修改记录,已成功

bf700363ed7b659eb6293abb4b2c50d6.png

总结:

以上就是有关 SpringBoot2.X 整合 Mysql + Mybatis 的 CURD 的简单案例,这里我没有对返回结果进行封装,各位可根据自行需要,进行返回结果的封装…

— end —

如有问题,请及时联系,谢谢

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/442296.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql crash 如何导出数据库_mysql 如何做到crash后无损恢复数据的

ps真实的流程没有我说的那么简单&#xff0c;下面的是最基本的情况。预备知识redologbinlogWAL机制redolog简介redolog是个循环日志&#xff0c;其大小固定为4g&#xff0c;存在2个指针来定位其是否已经满了。一个指针是当前写&#xff0c;一个指针是当前checkpoint,其2个指针的…

python turtle画四叶草的步骤_python turtle工具绘制四叶草的实例分享

本篇文章介绍了python使用turtle库绘制四叶草的方法&#xff0c;代码很简单&#xff0c;希望对学习python的朋友有帮助。import turtleimport timeturtle.setup(650.,350,200,200)turtle.pendown()turtle.pensize(10)turtle.pencolor(green)#四叶草def draw_clover(radius,rota…

python3所支持的整数进制_Python3快速入门(三)——Python3标准数据类型

Python3快速入门(三)——Python3标准数据类型一、Python3标准数据类型Python3 中有六种标准数据类型&#xff1a;A、Number(数字)B、String(字符串)C、List(列表)D、Tuple(元组)E、Set(集合)F、Dictionary(字典)Python3 的六种标准数据类型中&#xff0c;Number(数字)、String(…

python解图片迷宫生成路径_用Python代码来解图片迷宫的方法整理

译注&#xff1a;原文是StackOverflow上一个如何用程序读取迷宫图片并求解的问题&#xff0c;几位参与者热烈地讨论并给出了自己的代码&#xff0c;涉及到用python对图片的处理以及广度优先(BFS)算法等。问题by Whymarrh&#xff1a;当给定上面那样一张JPEG图片&#xff0c;如何…

web获取多行mysql结果_mysql中的多行查询结果合并成一个

SELECT GROUP_CONCAT(md.data1) FROM DATA md,contacts cc WHERE md.conskeycc.id AND md.mimetype_id 5 AND md.user_id17&#xff1a;利用函数&#xff1a;group_concat(),实现一个ID对应多个名称时&#xff0c;原本为多行数据&#xff0c;把名称合并成一行&#xff0c;如 |1…

学习Vue2.x

ref属性 &#xff08;1&#xff09;被用来给元素或子组件注册应用信息&#xff08;id的替代者&#xff09; &#xff08;2&#xff09;应用在html标签上获取的是真实DOM元素&#xff0c;或应用在组件标签上是组件实例对象&#xff08;VC&#xff09; &#xff08;3&#xff09;…

信号模型噪声服从零均值高斯分布_非高斯噪声下基于分数低阶循环谱的调制识别方法...

1 引言当前&#xff0c;绝大多数非高斯噪声的建模形式都为Alpha稳定分布噪声。首先&#xff0c;Alpha稳定分布符合中心极限定理&#xff0c;在理论上适合应用于实际场景中的噪声建模&#xff1b;其次&#xff0c;Alpha稳定分布由于其参数的可变性&#xff0c;包含高斯分布、柯西…

mysql 时间绝对值_datetime和timestamp--时间戳是绝对值,日期是相对值

遇到的问题&#xff1a;系统时间与数据库时间不一致&#xff0c;系统时间是8:20&#xff0c;存到数据库里是0:20。第一直觉是时区不同导致的。先看一段代码&#xff1a;Java代码public static void main(String[] args) {//System.out.println(TimeZone.getDefault());SimpleDa…

python网络编程自学_五分钟搞定Python网络编程实现TCP和UDP连接

Python网络编程实现TCP和UDP连接, 使用socket模块&#xff0c; 所有代码在python3下测试通过。实现TCP#!/usr/bin/env python3# -*- coding: utf-8 -*-import socket# 创建一个socket:s socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 建立连接:s.connect((www.baidu.co…

java自定义线程_Java自定义线程池详解

自定义线程池的核心&#xff1a;ThreadPoolExecutor为了更好的控制多线程&#xff0c;JDK提供了一套线程框架Executor&#xff0c;帮助开发人员有效的进行线程控制&#xff0c;其中在java.util.concurrent包下&#xff0c;是JDK并发包的核心&#xff0c;比如我们熟知的Executor…

java sql 递归查询_sql server实现递归查询的方法示例

本文实例讲述了sql server实现递归查询的方法示例。分享给大家供大家参考&#xff0c;具体如下&#xff1a;有时候面对树结构的数据时需要进行递归查询,网上找了一番,参考了各位大神的文章,发现蛮简单的,当做个小笔记方便以后使用sql server 通过CTE来支持递归查询,这对查询树形…

java 垃圾回收 null_java方法中把对象置null,到底能不能加速垃圾回收

今天逛脉脉&#xff0c;看见匿名区有人说java中把对做置null&#xff0c;这种做法很菜&#xff0c;不能加速垃圾回收&#xff0c;但是我看到就觉得呵呵了&#xff0c;我是觉得可以加速置null对象回收的。测试的过程中&#xff0c;费劲的是要指定一个合理的测试堆大小&#xff0…

零基础学java web开发pdf_新手学Java Web开发.pdf

作 者 &#xff1a;杨磊等编著出版发行 : 北京&#xff1a;北京希望电子出版社 , 2010.01ISBN号 &#xff1a;978-7-89498-988-8页 数 &#xff1a; 480丛书名 : 新手学编程系列原书定价 : 49.80主题词 : 计算机编程软件&#xff0c;JAVA WEB中图法分类号 : TP3 ( 工业技术->…

es 映射 mysql_ElasticSearch系列02:ES基础概念详解

1、ES 简介1)定义ES是elaticsearch简写&#xff0c; Elasticsearch是一个开源的高扩展的分布式全文检索引擎&#xff0c;它可以近乎实时的存储、检索数据&#xff1b;本身扩展性很好&#xff0c;可以扩展到上百台服务器&#xff0c;处理PB级别的数据。Elasticsearch也使用Java开…

java 跨域上传_java后台图片跨域上传图片 文件

发送方ResponseBodyRequestMapping(value"/imgUpLoadNewOneKuaYu")public String imgUpLoadNewOneKuaYu(HttpServletRequest request) throwsIOException {String urlStr "http://localhost:9080/no-js/admin/upload";Map textMap new HashMap();Multipar…

java ajax 导入excel_Ajax asp.net 导入Excel

$("#btnUploadExcelSave").click(function () {var fileObj document.getElementById("file").files[0]; // js 获取文件对象var FileController "../FileHandler.ashx?type3"; // 接收上传文件的后台地址// FormData 对象var form new Form…

java 外卖订餐系统_java外卖订餐系统小项目

本文实例为大家分享了java外卖订餐系统的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下执行结果&#xff1a;通过选择功能序号&#xff0c;执行响应的功能&#xff1a;代码实现&#xff1a;package 外卖订餐系统;/** 代码优点&#xff0c;使用 循环&#xff1a;* 显…

mysql 性能问题_mysql性能问题

性能优化的目的是什么呢&#xff1f;(合理利用可利用的资源)性能优化的方向&#xff1a;硬件方面&#xff1a;CPU、内存、IO、网络、硬盘、显卡软件方面&#xff1a;mysql这个软件内部优化&#xff0c;比如sql、算法&#xff0c;一些配置项目方面&#xff1a;需求设计、架构优化…

java 字符串包含某个字符_java中判断字符串中是否包含某个特定字符串的方法有哪些...

判断一个字符串是否包含某个子串的n种方法&#xff1a;1、startsWith()方法2、contains()方法3、indexOf方法startsWith()方法这个方法有两个变体&#xff0c;用于检测字符串是否以指定的前缀开始。此方法定义的语法如下:public boolean startsWith(String prefix, int toffset…

java socket 判断是否断开_Linux Socket:如何在客户端程序中检测断开的网络?

仅在调用write()函数时才能检测到未插入的以太网电缆 . 这是因为tcp堆栈的tcp重传没有你的意识 . 这是解决方案 .即使您已经为应用程序套接字设置了keepalive选项&#xff0c;但是如果您的应用程序一直在套接字上写入&#xff0c;您无法及时检测到套接字的死连接状态 . 那是因为…