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…

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

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

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

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 垃圾回收 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 ( 工业技术->…

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

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

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

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

java的方法调用中分不清_java中不太清晰的知识点

一、什么包需要导入&#xff0c;什么包不需要导入1.java.lang包的内容是自动导入的&#xff0c;不需要手动导入&#xff0c;其它必须手动导入。2.java.io.OutputStreamWrite已经是完整的类&#xff0c;无需再导入&#xff0c;而printWrite这个类&#xff0c;并不是调用完整的类…

java生命小游戏_Java修炼——飞机生存小游戏

在学习了java入门的课程之后&#xff0c;自己动手跟着老师写的一个小游戏&#xff0c;用的是Frame。总共有七个类。1.飞机游戏的主窗口(MyGameFrame)继承Frame。package com.bjsxt.plane;import java.awt.Color;import java.awt.Font;import java.awt.Frame;import java.awt.Gr…

链队列的基本运算java_链式队列基本操作的实现问题

问题描述&#xff1a;用链式存储方式实现队列的基本操作涉及变量&#xff1a;front&#xff1a;Node型自定义变量&#xff0c;指向队首元素rear&#xff1a;Node型自定义变量&#xff0c;指向队尾元素涉及教材&#xff1a;《数据结构——Java语言描述(第2版)》 清华大学出版社大…

mysql数据库优化看的书_MySQL 数据库优化,看这篇就够了

点击上方"IT牧场"&#xff0c;选择"设为星标"技术干货每日送达&#xff01;来源&#xff1a;segmentfault.com/a/1190000018631870前言数据库优化一方面是找出系统的瓶颈,提高MySQL数据库的整体性能,而另一方面需要合理的结构设计和参数调整,以提高用户的相…

python 升级所有库_自动更新Python所有第三方库

一般python用得比较久以后&#xff0c;就会安装很多第三方的库。比如这是我的pip list情况&#xff1a;pip list而且一屏还显示不完。通过如下命令可以看到需要更新的第三方库&#xff1a;pip list -o需要更新的库而pip提供的更新命令只能一个个的更新...pip install -U 库名 #…

java 反射 类变量_java反射机制取出model类的所有变量,以及value

工作上遇到个问题,顺便解决了,希望对大家有帮助package com.zuidaima.util;public static void main(String[] args) throws ClassNotFoundException, IllegalArgumentException, IllegalAccessException, InstantiationException {Class> obj Class.forName("com.roi…

php 去掉不可见字符串,php去掉指定字符串的办法

php去掉指定字符串的办法&#xff1a;首先创建一个PHP示例文件&#xff1b;然后定义字符串&#xff1b;最后通过“str_replace(array("_","",""),"",$str);”方法去掉指定字符串即可。推荐&#xff1a;《PHP视频教程》用正则可以解决问…

php文件上传并保存路径到数据库,thinkphp表单上传文件并将文件路径保存到数据库中?...

上传单个文件&#xff0c;此文以上传图片为例&#xff0c;上传效果如图所示创建数据库upload_img,用于保存上传路径CREATE TABLE seminar_upload_img ( id int(11) NOT NULL AUTO_INCREMENT, img_name varchar(255) DEFAULT NULL COMMENT 图片名称, img_url varchar(255) DE…

PHP数组的访问方法有几种,数组常用方法有哪些

数组中常用的方法有&#xff1a;1、给数组末尾添加新内容的push方法&#xff1b;2、删除数组最后一项的pop方法&#xff1b;3、删除数组第一项的shift方法&#xff1b;4、向数组首位添加新内容unshift方法等等。数组常用的一些方法&#xff1a;1、push()向数组的末尾添加新内容…