添加依赖

com.baomidou

mybatis-plus-boot-starter

3.5.3.2

org.mybatis

mybatis-spring

org.mybatis

mybatis-spring

3.0.3

com.mysql

mysql-connector-j

org.projectlombok

lombok

配置属性信息 spring:

datasource:

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

username: XXX

password: XXX

url: jdbc:mysql://localhost:3306/XXX?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC&serverTimezone=Asia/Shanghai

mybatis-plus:

mapper-locations: classpath:/mapper/*.xml

configuration:

log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 编写业务逻辑测试代码 package org.coding.java.controller;

import com.baomidou.mybatisplus.core.metadata.IPage;

import io.swagger.v3.oas.annotations.Operation;

import io.swagger.v3.oas.annotations.tags.Tag;

import jakarta.annotation.Resource;

import org.coding.java.api.CommonResult;

import org.coding.java.domain.user.UserDO;

import org.coding.java.query.PageQueryVO;

import org.coding.java.service.UserService;

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

import java.util.List;

@Tag(name = "用户管理")

@RestController

@RequestMapping("api/v1/user")

public class UserController {

@Resource

private UserService userService;

@PostMapping("/saveUser")

@Operation(summary = "新增用户")

public CommonResult saveUser(@RequestBody UserDO userDO) {

return userService.saveUser(userDO);

}

@DeleteMapping("/deleteUser/{id}")

@Operation(summary = "根据ID删除用户")

public CommonResult deleteUser(@PathVariable("id") Long id) {

return userService.deleteUserById(id);

}

@GetMapping("/selectList")

@Operation(summary = "查询用户信息")

public CommonResult> selectList() {

return userService.selectList();

}

@PostMapping("/selectPage")

@Operation(summary = "分页查询用户信息")

public CommonResult> selectPage(@RequestBody PageQueryVO queryVO) {

return userService.selectPage(queryVO);

}

@PutMapping("/updateUser")

@Operation(summary = "更新用户信息")

public CommonResult updateUser(@RequestBody UserDO userDO) {

return userService.updateUser(userDO);

}

}

package org.coding.java.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;

import com.baomidou.mybatisplus.core.metadata.IPage;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import jakarta.annotation.Resource;

import org.coding.java.api.CommonResult;

import org.coding.java.api.ResponseMessage;

import org.coding.java.domain.user.UserDO;

import org.coding.java.mapper.UserMapper;

import org.coding.java.query.PageQueryVO;

import org.coding.java.service.UserService;

import org.springframework.stereotype.Service;

import org.springframework.transaction.annotation.Transactional;

import java.util.Collections;

import java.util.List;

import java.util.Objects;

@Service

@Transactional

public class UserServiceImpl implements UserService {

@Resource

private UserMapper userMapper;

@Override

public CommonResult saveUser(UserDO userDO) {

return CommonResult.ok(ResponseMessage.MessageCode.SAVE_SUCCESS.code(), ResponseMessage.MessageCode.SAVE_SUCCESS.message(), userMapper.insert(userDO));

}

@Override

public CommonResult deleteUserById(Long id) {

int count = userMapper.deleteById(id);

if (count > 0) {

return CommonResult.ok(ResponseMessage.MessageCode.DELETE_SUCCESS.code(), ResponseMessage.MessageCode.DELETE_SUCCESS.message(), count);

}

return CommonResult.failed(ResponseMessage.MessageCode.DELETE_FAILED.code(), ResponseMessage.MessageCode.DELETE_FAILED.message(), count);

}

@Override

public CommonResult> selectList() {

if (getUserList().size() > 0) {

return CommonResult.ok(ResponseMessage.MessageCode.SELECT_SUCCESS.code(), ResponseMessage.MessageCode.SELECT_SUCCESS.message(), getUserList());

}

return CommonResult.failed(ResponseMessage.MessageCode.SELECT_FAILED.code(), ResponseMessage.MessageCode.SELECT_FAILED.message(), Collections.emptyList());

}

@Override

public CommonResult> selectPage(PageQueryVO queryVO) {

IPage page = new Page<>(queryVO.getPageNo(), queryVO.getPageSize());

IPage pageList = getUserPageList(queryVO, page);

if (pageList.getRecords().size() > 0) {

return CommonResult.ok(ResponseMessage.MessageCode.SELECT_SUCCESS.code(), ResponseMessage.MessageCode.SELECT_SUCCESS.message(), pageList);

} else if (pageList.getRecords().size() == 0) {

return CommonResult.failed(ResponseMessage.MessageCode.SELECT_NON_CONFORMANCE.code(), ResponseMessage.MessageCode.SELECT_NON_CONFORMANCE.message(), pageList);

}

return CommonResult.failed(ResponseMessage.MessageCode.SELECT_FAILED.code(), ResponseMessage.MessageCode.SELECT_FAILED.message(), pageList);

}

@Override

public CommonResult updateUser(UserDO userDO) {

int update = userMapper.updateById(userDO);

if (update > 0) {

return CommonResult.ok(ResponseMessage.MessageCode.UPDATE_SUCCESS.code(), ResponseMessage.MessageCode.UPDATE_SUCCESS.message(), update);

}

return CommonResult.failed(ResponseMessage.MessageCode.UPDATE_FAILED.code(), ResponseMessage.MessageCode.UPDATE_FAILED.message(), update);

}

private IPage getUserPageList(PageQueryVO queryVO, IPage page) {

LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();

wrapper.like(Objects.nonNull(queryVO.getName()), UserDO::getName, queryVO.getName());

wrapper.eq(Objects.nonNull(queryVO.getPhone()), UserDO::getPhone, queryVO.getPhone()).or();

wrapper.eq(Objects.nonNull(queryVO.getEmail()), UserDO::getEmail, queryVO.getEmail());

return userMapper.selectPage(page, wrapper);

}

private List getUserList() {

QueryWrapper wrapper = new QueryWrapper<>();

wrapper.select("id", "name", "age", "email", "sex", "phone");

return userMapper.selectList(wrapper);

}

}

配置mybatis-plus分页插件 package org.coding.java.config.mybatisplus;

import com.baomidou.mybatisplus.annotation.DbType;

import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;

import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor;

import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;

import org.mybatis.spring.annotation.MapperScan;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.transaction.annotation.EnableTransactionManagement;

/**

* @Description: mybatis常用配置

*/

@Configuration

@EnableTransactionManagement

@MapperScan("org.coding.java.mapper")

public class MybatisPlusConfig {

/**

* 实现分页配置

* @return

*/

@Bean

public MybatisPlusInterceptor mybatisPlusInterceptor() {

MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();

PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();

paginationInnerInterceptor.setDbType(DbType.MYSQL);

interceptor.addInnerInterceptor(paginationInnerInterceptor);

return interceptor;

}

}

配置mybatis-plus之属性自动填充 package org.coding.java.config.mybatisplus;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;

import org.apache.ibatis.reflection.MetaObject;

import org.springframework.stereotype.Component;

import java.time.LocalDateTime;

/**

* @Description: mybatis自动填充功能

*/

@Component

public class MyMetaObjectHandler implements MetaObjectHandler {

@Override

public void insertFill(MetaObject metaObject) {

this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now());

this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());

}

@Override

public void updateFill(MetaObject metaObject) {

this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());

}

}

如图所示

        二、SpringBoot3整合mybatis

1、添加依赖

org.springframework.boot

spring-boot-starter-web

mysql

mysql-connector-java

8.0.32

com.github.xiaoymin

knife4j-openapi3-jakarta-spring-boot-starter

4.3.0

org.coding

boot-cmmon

0.0.1-SNAPSHOT

org.mybatis

mybatis

3.5.13

com.github.pagehelper

pagehelper-spring-boot-starter

1.4.6

org.mybatis

mybatis-spring

3.0.3

2、配置属性

server:

port: 18082

spring:

datasource:

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

username: XXX

password: XXX

url: jdbc:mysql://localhost:3306/XXX?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC&serverTimezone=Asia/Shanghai

mybatis:

mapper-locations: classpath:/mapper/*.xml

configuration:

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

pagehelper:

helper-dialect: mysql # 指定数据库类型

reasonable: true

params: count=countSql

support-methods-arguments: true

# springdoc-openapi项目配置

springdoc:

swagger-ui:

path: /swagger-ui.html

tags-sorter: alpha

operations-sorter: alpha

api-docs:

path: /v3/api-docs

group-configs:

- group: 'mybatis'

paths-to-match: '/**'

packages-to-scan: org.coding.java.controller

# knife4j的增强配置,不需要增强可以不配

knife4j:

enable: true

setting:

language: zh_cn

logging:

level:

org.coding.java.mapper: debug

3、编写测试代码

package org.coding.java.service.impl;

import com.github.pagehelper.IPage;

import com.github.pagehelper.PageHelper;

import com.github.pagehelper.PageInfo;

import jakarta.annotation.Resource;

import org.coding.java.api.CommonResult;

import org.coding.java.api.ResponseMessage;

import org.coding.java.domain.user.UserDO;

import org.coding.java.mapper.UserMapper;

import org.coding.java.query.QueryPageVO;

import org.coding.java.service.UserService;

import org.springframework.stereotype.Service;

import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service

@Transactional

public class UserServiceImpl implements UserService {

@Resource

private UserMapper userMapper;

@Override

public CommonResult saveUser(UserDO userDO) {

return CommonResult.ok(ResponseMessage.MessageCode.SAVE_SUCCESS.code(), ResponseMessage.MessageCode.SAVE_SUCCESS.message(), userMapper.saveUser(userDO));

}

@Override

public CommonResult> selectList() {

List list = userMapper.selectList();

if (list.size() > 0) {

return CommonResult.ok(ResponseMessage.MessageCode.SELECT_SUCCESS.code(), ResponseMessage.MessageCode.SELECT_SUCCESS.message(), list);

}

return CommonResult.ok(ResponseMessage.MessageCode.SELECT_FAILED.code(), ResponseMessage.MessageCode.SELECT_FAILED.message(), list);

}

@Override

public CommonResult deleteUserById(Long id) {

Integer count = userMapper.deleteUserById(id);

if (count > 0) {

return CommonResult.ok(ResponseMessage.MessageCode.DELETE_SUCCESS.code(), ResponseMessage.MessageCode.DELETE_SUCCESS.message(), count);

}

return CommonResult.ok(ResponseMessage.MessageCode.DELETE_FAILED.code(), ResponseMessage.MessageCode.DELETE_FAILED.message(), count);

}

@Override

public CommonResult updateUser(UserDO userDO) {

Integer count = userMapper.updateUser(userDO);

if (count > 0) {

return CommonResult.ok(ResponseMessage.MessageCode.UPDATE_SUCCESS.code(), ResponseMessage.MessageCode.UPDATE_SUCCESS.message(), count);

}

return CommonResult.ok(ResponseMessage.MessageCode.UPDATE_FAILED.code(), ResponseMessage.MessageCode.UPDATE_FAILED.message(), count);

}

@Override

public CommonResult selectPage(QueryPageVO pageVO) {

PageHelper.startPage(pageVO.getPageNo(), pageVO.getPageSize());

List list = userMapper.selectPage(pageVO);

PageInfo pageInfo = new PageInfo<>(list);

if (pageInfo.getTotal() > 0) {

return CommonResult.ok(ResponseMessage.MessageCode.SELECT_SUCCESS.code(), ResponseMessage.MessageCode.SELECT_SUCCESS.message(), pageInfo);

}

return CommonResult.ok(ResponseMessage.MessageCode.SELECT_FAILED.code(), ResponseMessage.MessageCode.SELECT_FAILED.message(), pageInfo);

}

}

package org.coding.java.controller;

import com.github.pagehelper.IPage;

import com.github.pagehelper.PageInfo;

import io.swagger.v3.oas.annotations.Operation;

import io.swagger.v3.oas.annotations.tags.Tag;

import jakarta.annotation.Resource;

import org.coding.java.api.CommonResult;

import org.coding.java.domain.user.UserDO;

import org.coding.java.query.QueryPageVO;

import org.coding.java.service.UserService;

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

import java.util.List;

@Tag(name = "用户管理")

@RestController

@RequestMapping("/api/v1/user")

public class UserController {

@Resource

private UserService userService;

@PostMapping("/saveUser")

@Operation(summary = "新增用户")

public CommonResult saveUser(@RequestBody UserDO userDO) {

return userService.saveUser(userDO);

}

@GetMapping("/selectList")

@Operation(summary = "查询用户【不分页】")

public CommonResult> selectList() {

return userService.selectList();

}

@PostMapping("/selectPage")

@Operation(summary = "查询用户【分页】")

public CommonResult selectPage(@RequestBody QueryPageVO pageVO) {

return userService.selectPage(pageVO);

}

@DeleteMapping("/deleteUserById/{id}")

@Operation(summary = "删除用户【根据ID】")

public CommonResult deleteUserById(@PathVariable("id") Long id) {

return userService.deleteUserById(id);

}

@PutMapping("/updateUser")

@Operation(summary = "编辑用户【根据ID】")

public CommonResult updateUser(@RequestBody UserDO userDO) {

return userService.updateUser(userDO);

}

}

4、XML文件

PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

insert into user(name,age,phone,sex,email) value(#{name},#{age},#{phone},#{sex},#{email})

delete from user where id = #{id}

update user

name = #{name},

age = #{age},

phone = #{phone},

sex = #{sex},

email = #{email},

update_time = now()

where id = #{id}

5、测试数据是否能走通

相关链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: