【Spring Boot】如何集成mybatis-plus

  1. 在pom文件中导入maven坐标
    1.         <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.23</version></dependency><!--mybatis-plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.2</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.23</version></dependency>
  2. 创建maven项目的目录结构
  3. 创建ResultBean作为返回包装类
    1. package com.app.user.common;import lombok.Data;import java.io.Serializable;
      import java.util.HashMap;
      import java.util.Map;/*** 返回bean信息** @author Administrator*/
      @Data
      public class ResultBean<T> implements Serializable {private static final long serialVersionUID = -6759928086797729382L;/*** 编码:1成功,0和其它数字为失败*/private Integer code;/*** 错误信息*/private String msg;/*** 数据*/private T data;/*** 动态数据*/private Map map = new HashMap();public static <T> ResultBean<T> success(T object) {ResultBean<T> r = new ResultBean<T>();r.data = object;r.code = 1;return r;}public static <T> ResultBean<T> error(String msg) {ResultBean r = new ResultBean();r.msg = msg;r.code = 0;return r;}public ResultBean<T> add(String key, Object value) {this.map.put(key, value);return this;}}
      
  4. 创建mybatis plus的分页配置信息
    1. package com.app.user.config;import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
      import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
      import org.springframework.context.annotation.Bean;
      import org.springframework.context.annotation.Configuration;/*** 配置MybatisPlus的配置信息** @author Administrator*/
      @Configuration
      public class MybatisPlusConfig {@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {// 获取MybatisPlus的拦截器链MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();// 添加分页拦截器PaginationInnerInterceptor,实现自动分页mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());return mybatisPlusInterceptor;}}
      
  5. 创建表实体类信息
    1. package com.app.user.pojo;import com.baomidou.mybatisplus.annotation.TableName;
      import lombok.Data;/*** 用户实体类** @author Administrator*/
      @Data
      @TableName(value = "tb_user")
      public class User {/*** 主键*/private Long id;/*** 用户名*/private String username;/*** 联系电话*/private String phone;}
  6. 创建mapper类
    1. package com.app.user.mapper;import com.app.user.pojo.User;
      import com.baomidou.mybatisplus.core.mapper.BaseMapper;
      import org.apache.ibatis.annotations.Mapper;/*** 用户mapper** @author Administrator*/
      @Mapper
      public interface UserMapper extends BaseMapper<User> {/*** 计算数目** @return 返回计算数目*/int countNum();}
      
  7. 创建服务接口类
    1. package com.app.user.service;import com.app.user.pojo.User;
      import com.baomidou.mybatisplus.extension.service.IService;/*** 用户服务接口** @author Administrator*/
      public interface UserService extends IService<User> {/*** 计算数目** @return 返回记录数*/int countNum();}
      
  8. 创建服务接口类实现类
    1. package com.app.user.service.impl;import com.app.user.mapper.UserMapper;
      import com.app.user.pojo.User;
      import com.app.user.service.UserService;
      import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
      import org.springframework.stereotype.Service;/*** 用户服务** @author Administrator*/
      @Service
      public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {@Overridepublic int countNum() {// 使用原生的xml文件mapper查询表记录return this.baseMapper.countNum();}}
      
  9. 创建服务的controller类
    1. package com.app.user.controller;import cn.hutool.core.util.StrUtil;
      import com.app.user.common.ResultBean;
      import com.app.user.pojo.User;
      import com.app.user.service.UserService;
      import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
      import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
      import lombok.RequiredArgsConstructor;
      import lombok.extern.slf4j.Slf4j;
      import org.springframework.web.bind.annotation.*;import javax.servlet.http.HttpServletRequest;/*** 用户控制器** @author Administrator*/
      @RestController
      @RequestMapping("/users")
      @Slf4j
      @RequiredArgsConstructor
      public class UserController {/*** 结合@RequiredArgsConstructor进行构造器注入*/private final UserService userService;/*** 新增用户** @param user 用户信息* @return 用户信息*/@PostMappingpublic ResultBean<User> save(@RequestBody User user) {log.info("新增用户,用户信息:{}", user.toString());userService.save(user);return ResultBean.success(user);}/*** 根据id修改用户信息** @param user 用户信息* @return 修改提示信息*/@PutMappingpublic ResultBean<String> update(HttpServletRequest request, @RequestBody User user) {log.info(user.toString());userService.updateById(user);return ResultBean.success("用户信息修改成功");}/*** 根据id查询用户信息** @param id 用户id* @return 用户信息*/@GetMapping("/{id}")public ResultBean<User> getById(@PathVariable Long id) {log.info("根据id查询用户信息...");User user = userService.getById(id);if (user != null) {return ResultBean.success(user);}return ResultBean.error("没有查询到对应用户信息");}/*** 用户信息分页** @param page     当前页* @param pageSize 每页显示条数* @param username 用户名* @return 返回分页用户信息*/@GetMapping("/page")public ResultBean<Page<User>> page(int page, int pageSize, String username) {log.info("page = {},pageSize = {},username = {}", page, pageSize, username);// 1、构造简单分页模型Page<User> pageInfo = new Page<>(page, pageSize);// 2、构造条件构造器LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();// 3、添加用户名过滤条件,使用模糊匹配,不为空时才生效queryWrapper.like(StrUtil.isNotEmpty(username), User::getUsername, username);// 4、添加排序条件queryWrapper.orderByDesc(User::getId);// 5、执行查询,查询的结果将会直接存在于pageInfo对象中userService.page(pageInfo, queryWrapper);return ResultBean.success(pageInfo);}/*** 获取用户记录数** @return 返回记录数*/@GetMapping("/count")public ResultBean<Integer> count() {log.info("计算用户数目...");int i = userService.countNum();return ResultBean.success(i);}}
      
  10. 在resources的文件夹创建mapper文件夹,并创建mapper.xml文件,示例创建的是UserMapper.xml文件
    1. <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
      <mapper namespace="com.app.user.mapper.UserMapper"><resultMap id="BaseResultMap" type="com.app.user.pojo.User"><result property="id" column="id" jdbcType="DECIMAL"/><result property="username" column="username" jdbcType="VARCHAR"/><result property="phone" column="phone" jdbcType="VARCHAR"/></resultMap><sql id="Base_Column_List">id,username,phone</sql><select id="countNum" resultType="int">select count(*)from tb_user;</select></mapper>
  11. 创建application.yml文件并配置下列信息
    1. server:port: 8080
      spring:application:#应用的名称,可选name: user-servicedatasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3333/user_demo?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=trueusername: rootpassword: 123456type: com.alibaba.druid.pool.DruidDataSourcemybatis-plus:configuration:#在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射map-underscore-to-camel-case: truelog-impl: org.apache.ibatis.logging.stdout.StdOutImplglobal-config:db-config:id-type: ASSIGN_IDmapper-locations: classpath:mapper/*.xml
      
  12. 创建logback.xml日志文件并配置下列信息
    1. <?xml version="1.0" encoding="UTF-8"?>
      <!--~ Licensed to the Apache Software Foundation (ASF) under one or more~ contributor license agreements.  See the NOTICE file distributed with~ this work for additional information regarding copyright ownership.~ The ASF licenses this file to You under the Apache License, Version 2.0~ (the "License"); you may not use this file except in compliance with~ the License.  You may obtain a copy of the License at~~     http://www.apache.org/licenses/LICENSE-2.0~~ Unless required by applicable law or agreed to in writing, software~ distributed under the License is distributed on an "AS IS" BASIS,~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.~ See the License for the specific language governing permissions and~ limitations under the License.--><configuration><property name="log.context.name" value="sharding-jdbc-spring-namespace-mybatis-example" /><property name="log.charset" value="UTF-8" /><property name="log.pattern" value="[%-5level] %date --%thread-- [%logger] %msg %n" /><contextName>${log.context.name}</contextName><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder charset="${log.charset}"><pattern>${log.pattern}</pattern></encoder></appender><root><level value="info" /><appender-ref ref="STDOUT" /></root>
      </configuration>
  13. 直接启动SpringBootApplication启动类即可

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

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

相关文章

uniapp 连接斑马PDA调试

1、先把PDA设置成开发者模式 打开设置--》关于手机 --》单击版本号&#xff0c;5次以上 连线单击5次以上 2、后退--》找到系统 --》高级 3、打开 --》开发都模式 4、找到调试 --》 打开USB调试 5、设置USB偏好设置&#xff0c;插入电脑连接PDA就会在通知栏上显示&#xff0c;默…

蓝桥杯 动态规划

01 数字三角形 #include<bits/stdc.h> using namespace std; const int N105; using lllong long; ll a[N][N],dp[N][N]; int main(){int n;cin>>n;for(int i1;i<n;i){for(int j1;j<i;j){cin>>a[i][j];}}for(int i5;i>1;i--){for(int j1;j<i;j){…

拒绝废话,直接开画!Python零基础教程之画图

引文 很多教程&#xff0c;开始教python&#xff0c;就是语法呀&#xff0c;字符类型这些基础的&#xff0c;虽说是基础&#xff0c;你也不能说没用。 但是&#xff0c;对于前期要快速成长的我们来说&#xff0c;属实不够看。 我们是新手&#xff0c;我们是菜鸟&#xff0c;但…

OTFX欧汇提供更优质的外汇交易产品和服务

OTFX的外汇交易明智决策能力&#xff1a;准确捕捉外汇市场机会&#xff0c;实现稳定盈利 把握机遇&#xff0c;重要的是争取而不是等待。在金融市场中&#xff0c;明智的决策能力对于外汇交易成败至关重要。及时的断绝&#xff0c;果断的出手&#xff0c;才能够保证出手的成功…

提升Jmeter测试效率的9种参数化方法!

jmeter工具无论做接口测试还是性能测试&#xff0c;参数化都是一个必须掌握且非常有用的知识点。参数化的使用场景: 1&#xff09;多个请求都是同一个ip地址&#xff0c;若服务器地址更换了&#xff0c;则脚本需要更改每个请求的ip 2&#xff09;注册账号&#xff0c;不允许账…

力扣572:另一棵树的子树

力扣572&#xff1a;另一棵树的子树 给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所…

用友NC FileUploadServlet 反序列化RCE漏洞复现

0x01 产品简介 用友 NC 是用友网络科技股份有限公司开发的一款大型企业数字化平台。 0x02 漏洞概述 用友 NC nc.file.pub.imple.FileUploadServlet 反序列化漏洞,攻击者可通过该漏洞在服务器端任意执行代码,写入后门,获取服务器权限,进而控制整个web服务器。 0x03 复现环…

龙迅LT2611UX 四端口LVDS转HDMI(2.0)

1.描述&#xff1a; LT2611UX 四端口LVDS TO HDMI2.0。 LT2611UX是一款高性能得LVDS到HDMI2.0转换器得STB&#xff0c;DVD应用程序&#xff0c;LVDS输入可以配置单端口&#xff0c;双端口或者四端口&#xff0c;带有一个高速时钟通道&#xff0c;最多可运行三到四个高速数据…

第一节JavaScript 简介与使用

JavaScript简介 JavaScript是互联网上最流行的脚本语言&#xff0c;这门语言可用于HTML和Web&#xff0c;更广泛用于服务器、PC、电脑、智能手机等设备上。 JavaScript是一种轻量级的编程语言。 JavaScript是可插入HTML页面的编程代码。 JavaScript插入HTML页面后&#xff…

算法基础六

搜索插入位置 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2 示例 2: 输入: nums [1,3,5,6], target 2 输…

Linux常用快捷键

1. tab 键补全 1)当我们忘记了一些指令怎么写时&#xff0c;可以双击tab键&#xff0c;查看所有指令&#xff0c;显示出来后可以按enter键往下翻&#xff0c;想要取消命令可以按ctrl c。 2)知道开头怎么写&#xff0c;后面的忘了&#xff0c;也可以双击tab键查询开头排列的指令…

通过证书透明度发现更多相关资产

通过证书透明度发现更多相关资产 1.证书透明度概述2.搜索实战3.为什么证书透明度技术是可行的4.DigiCert 和其他 CA5.缺陷缓解措施 1.证书透明度概述 许多现代网站都采用自动颁发和续订 TLS 证书&#xff0c;在设置 TLS 证书部署的方式上存在缺陷。它允许任何人发现同一服务器…

【皇帝的新装】像管理产品一样,来管理自己

在前进的路上需要不时的回头看&#xff0c;看自己来时的脚步&#xff0c;是杂乱无章&#xff0c;还是方向一致。善于从经验中总结可以让我们少走许多弯路&#xff0c;降低我们的消耗。 偶然间&#xff0c;回头看看&#xff0c;入行产品经理已经三年有余。沉迷在各种具体事务中&…

回溯法及例题(C++实现)

回溯法概念 概念&#xff1a;在包含问题所有解的解空间树中&#xff0c;按照深度优先搜索的策略&#xff0c;根据根结点&#xff08;开始节点&#xff09;出发搜索解空间树。 流程&#xff1a;首先根结点成为活节点&#xff0c;同时也成为当前的扩展结点。在当前的扩展结点处…

代码随想录day5 哈希表part 01 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和

当我们遇到了要快速判断一个元素是否出现集合里的时候&#xff0c;就要考虑哈希法。 哈希碰撞&#xff1a;1、拉链法&#xff1a;其实拉链法就是要选择适当的哈希表的大小&#xff0c;这样既不会因为数组空值而浪费大量内存&#xff0c;也不会因为链表太长而在查找上浪费太多时…

<JavaEE> 单例模式的两种实现:“饿汉模式”和“懒汉模式”

目录 一、单例模式概述 二、“饿汉模式”实现单例模式 三、“懒汉模式”实现单例模式 3.1 单线程下的“懒汉模式” 3.2 多线程下的“懒汉模式” 一、单例模式概述 1&#xff09;什么是单例模式&#xff1f; 单例模式是一种设计模式。 单例模式可以保证某个类在程序中只存…

免费百度SEO优化工具,百度SEO优化排名工具

百度SEO关键词工具 让我们聚焦在百度SEO关键词工具上。对于任何想要在百度搜索引擎中脱颖而出的网站管理员而言&#xff0c;深入了解用户搜索习惯和关键词的选择是至关重要的。 百度SEO关键词工具不仅提供了免费的服务&#xff0c;而且功能强大。通过输入相关领域的关键词&…

ESP32-Web-Server编程-通过 Web 下载文本

ESP32-Web-Server编程-通过 Web 下载文本 概述 当你希望通过网页导出设备的数据时&#xff0c;可以在 ESP32 上部署一个简单的文件 Web 服务器。 需求及功能解析 本节演示如何在 ESP32 上部署一个最简单的 Web 服务器&#xff0c;来接收浏览器或者 wget 指令请求文件数据。…

VMware安装Ubuntu系统(Server端,Desktop端步骤一样)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

MFC发送ZPL指令控制斑马打印机

1、参考1&#xff1a;用Python操控斑马打印机的技术总结 - 重拾初心的青年人 - 博客园 (cnblogs.com) 参考2&#xff1a;VC斑马打印机_vc zpl-CSDN博客 参考3&#xff1a;斑马打印机ZPL语言编程实战_梅长酥的博客-CSDN博客 参考4&#xff1a;关于斑马打印机开发的几种方式_斑马…