java mysql crud_java整合crud和分页插件操作mysql

这篇文章主要介绍了Spring mvc整合mybatis(crud+分页插件)操作mysql的步骤详解,需要的朋友可以参考下

一、web.xml配置

我们都知道java ee的项目启动的第一件事就是读取web.xml,spring mvc 的web.xml我在上一篇文章中也做了详细讲解,不懂的可以回头看看,讲解的这个项目源码我也会放到github上,也可以去那里看看,这里就不做介绍了。

web.xml 配置

contextConfigLocation

classpath:/context.xml

org.springframework.web.context.ContextLoaderListener

dispatcherServlet

org.springframework.web.servlet.DispatcherServlet

1

contextConfigLocation

classpath:external-servlet.xml

dispatcherServlet

/

encodingFilter

org.springframework.web.filter.CharacterEncodingFilter

encoding

UTF-8

forceEncoding

true

encodingFilter

/*

二、spring(context.xml) 上下文配置

这个配置文件可以说是服务器容器第二个要读取的了,这里配置了spring启动时扫描的基础包路径、外部配置的属性文件的导入、需要连接的数据库的配置、mybatis 和 spring 的整合、开头我们说到的 mybatis 日期插件和分页插件也是在这里配置、还有就是mybatis扫描的实体包及其 mapper 文件位置了。

context.xml 配置

class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"

p:location="classpath:jdbc.properties" />

destroy-method="close">

三、spring 控制器配置

这里配置的是控制器所在的位置,及其支持的请求类型和编码。

external-servlet.xml 配置

text/html;charset=UTF-8

配置信息就是以上三个了,接下来我们来看看具体的代码,

四、代码讲解

1、java代码讲解,以下不做排序,只是按编辑器显示顺序排列讲解。(以下内容均在java.com.qbian包下)common |

annotation |

@interface Now : 插入|更新数据的日期注解。

@interface UUID :插入数据的uuid注解。

controller |

ExternalController.class :核心控制器,拦截所有请求,异常处理,跨域设置等功能。

dao |

interface StudentDao :使用例子,crud 共通方法。

dto |

PageInfoDto.class :分页使用的基础dto对象。

ResponseDto.class :响应数据的基本模型。

entity |

Student.class :使用例子,自定义注解的使用。

enums |

enum MessageEnum :统一的返回状态码及描述信息。

exception |

ExternalServiceException.class :自定义异常,业务相关都抛出该异常对象。

factory |

BeanFactoryUtil.class :根据bean name获取spring管理的bean实例。

hadle |

ExceptionHandle.class :spring自带的统一异常捕获处理。

plugin |

DatePlugin.class :自定义mybatis日期插件。

PagePlugin.class :自定义mybatis分页插件。

PropertiesConfigurer.class :将外部配置的属性文件读取到 spring 容器中统一管理。

service |

interface IbaseServie :基础的service接口。

BaseService.class :基础的service抽象类。

TokenService.class :鉴权token服务类。

util |

CheckUtil.class :请求信息校验相关工具类。

DateUtil.class :日期相关工具类。

ResponseUtil.class :响应信息工具类。

SecondsFormatSerializer.class :java.util.Date类型转时间戳工具类。

TimestampSecondsFormatSerializer.class :java.sql.Timestamp类型转时间戳工具类。

StringUtil.class :字符串相关工具类。

other |

dao |

interface StudentExtDao :使用例子,业务相关crud操作。

dto |

QueryStudentSexPageDto.class :根据学生性别分页查询返回对象dto。

StudentPageDto.class :根据学生性别分页查询封装的对象。

service |

AddStudentService.class :插入学生数据接口。

DeleteStudentService.class :删除学生数据接口。

FindStudentService.class :查询学生数据接口。

UpdateStudentService.class :更新学生数据接口。

QueryStudentBySexService.class :根据学生性别分页查询接口。

2、mybatis的 mapper.xml讲解(以下内容均在resources/com/qbian文件夹下)common |

dao |

StudentDao.xml :对应common.dao.StudentDao接口。

other |

dao |

StudentExtDao.xml :对应other.dao.StudentExtDao接口。

五、功能演示

1、token校验

这里的token我写死在代码里了,123456表示校验成功。我们先用插入数据接口测试一下,传个错误的token,如下图:

0fe774797ab363696b3709b0d94778a0.png

授权token校验

2、请求参数校验

我们来看看插入数据接口还需要校验哪些值。// 校验请求参数

CheckUtil.checkEmpty(params, "token", "sex", "age");

// 校验 token

tokenService.checkUserLogin(params.getString("token"));

Student student = JSONObject.parseObject(params.toJSONString(), Student.class);

studentDao.insert(student);

return ResponseUtil.success();

然后我们少传age字段试一下:

9470e887f806f8445d500cc6e907597f.png

请求字段校验

3、插入数据

在插入数据之前我们先看看数据库里都有哪些数据:

9edf430668ad7461d1fa173fa52ce1f2.png

初始化数据库中的值

从上图可以看出,数据库中没有任何数据。我们来执行下插入接口。

83c5d0c61d80e981b113372700159235.png

测试插入接口

我们再来看下数据库:

c3440d0af192afc293236b6829b1763f.png

调用插入接口后

数据库已经有数据了。

4、查询数据

根据上一条数据的ID查询

a1655c9b353c654cfdf32272ee3da73a.png

调用查询接口

刚插入的数据我们也查询出来了。

5、更新数据

更新一下查询出来的数据:

7eb40c7ae7bdda07d8e534aeec1d226b.png

调用更新接口

然后我们再查询一次该条数据

f9e44012e0bc72ba20d99ad7bb35823a.png

更新后再次查询

可以看到性别和年龄都更新了,并且更新日期也是最新的了。

6、分页查询

先来看一下代码:// 校验请求参数

CheckUtil.checkEmpty(params, "token", "sex", "pageNo", "pageSize");

// 校验 token

tokenService.checkUserLogin(params.getString("token"));

// 根据性别分页查询 Student,查询总数会自动封装到pageDto对象上

QueryStudentSexPageDto pageDto = JSONObject.parseObject(params.toJSONString(), QueryStudentSexPageDto.class);

List students = studentExtDao.queryBySexWithPage(pageDto);

StudentPageDto studentPageDto = new StudentPageDto();

// 查询总数会自动封装到pageDto对象上

studentPageDto.setTotalSize(pageDto.getTotalSize());

studentPageDto.setStudents(students);

return ResponseUtil.success(studentPageDto);

分页查询之前我们想要导入多一点测试数据。

21b7832e0ad9f5ca0b528c9553f5b348.png

分页前测试数据

可以看到数据库目前有十条测试数据,男生有六条,年龄分别为19~24。好了,我们开始调用分页查询接口:

002fd6dff0dac7e142de4b6ada688d49.png

调用分页查询接口返回结果

格式化一下返回数据:

ec7ef795b78d55d6f09a046b9fba0a6f.png

分页查询返回结果整理

这和我们直接查询数据库看到的一样。

7、删除数据

最后就是删除数据接口了,我们将第一条测试数据删除掉。

af89309530505ebbc07640fe184e2cb4.png

调用删除接口返回结果

然后我们在查询一下是否真的删除了。

78571d70c243bec6e7450bfffe1fc41a.png

删除后查询

数据已经被删除了。

最后附上项目源码:github.com/Qbian61/spring-mvc-mybatis

【相关推荐】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值