利用SpringBoot整合mybatis

news2024/12/28 4:35:59

代码地址:https://gitee.com/jkangle/springboot-exercise.git

1.构建SpringBoot项目

  • 注意版本不能太高
  • 版本太高会出现问题
  • 整体的项目结构如图
    在这里插入图片描述

2.导入Mybatis依赖

<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.11</version>
        </dependency>

3.写domain层

这一层主要是建立和数据库的映射

package com.jkk.springboot_mybatis.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

import java.io.Serializable;
/**
 * @TableName users
 * @author jkk
*/
@NoArgsConstructor
@AllArgsConstructor
@ToString
@Data
public class Users implements Serializable {
    private String username;
    private String password;
    private String idNumber;
    private String phoneNumber;
    private String gender;
    private String dataStatus;
    private static final long serialVersionUID = 1L;
}

4.写mapper层

mapper层主要是对数据库的操作接口

package com.jkk.springboot_mybatis.mapper;

import com.jkk.springboot_mybatis.domain.Users;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author jkk
 */
@Repository
public interface UserMapper {
    /**
     * 增加用户
     * @param users
     * @return
     */
    int adduser(Users users);

    /**
     * 删除用户
     * @param username
     * @return
     */
    int deleteUser(String username);

    /**
     * 更新用户
     * @param users
     * @return
     */
    int updateUser(Users users);

    /**
     * 查询单个用户
     * @param username
     * @return
     */
    Users getByUserName(String username);

    /**
     * 查询所有的用户
     * @return
     */
    List<Users> getAllUser();
}

mapper层的具体的实现有两种的方式来书写,通过 注解配置,或者通过xml文件配置

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTO Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jkk.springboot_mybatis.mapper.UserMapper">
    <select id="getByUserName" resultType="Users">
        select * from users where username = #{username}
    </select>
    <select id="getAllUser" resultType="Users">
        select * from users
    </select>
    <insert id="adduser" parameterType="Users">
        insert into users(username,password,id_number,phone_number,gender,data_status)values (#{username},#{password},#{idNumber},#{phoneNumber},#{gender},#{dataStatus})
    </insert>
    <update id="deleteUser" parameterType="String">
        delete
        from users
        where username = #{username};
    </update>
    <update id="updateUser" parameterType="Users">
        update users set password = #{password} where username=#{username}
    </update>

</mapper>

5.写service层

具体的业务层

//接口
package com.jkk.springboot_mybatis.service;

import com.github.pagehelper.PageInfo;
import com.jkk.springboot_mybatis.domain.Users;

import java.util.List;

/**
 * @author jkk
 */
public interface UserService {
    /**
     * 增加用户
     * @param users
     * @return
     */
    int adduser(Users users);

    /**
     * 删除用户
     * @param username
     * @return
     */
    int deleteUser(String username);

    /**
     * 更新用户
     * @param users
     * @return
     */
    int updateUser(Users users);

    /**
     * 查询单个用户
     * @param username
     * @return
     */
    Users getByUserName(String username);

    /**
     * 查询所有的用户
     * @return
     */
    List<Users> getAllUser();

    /**
     * 分页查询
     * @param pageNum
     * @param pageSize
     * @return
     */
    public PageInfo<Users> findAll(int pageNum,int pageSize);
}

//具体的实现类
package com.jkk.springboot_mybatis.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.github.pagehelper.page.PageMethod;
import com.jkk.springboot_mybatis.domain.Users;
import com.jkk.springboot_mybatis.mapper.UserMapper;
import com.jkk.springboot_mybatis.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author jkk
 */
@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserMapper userMapper;
    @Override
    public int adduser(Users users) {
        return userMapper.adduser(users);
    }

    @Override
    public int deleteUser(String username) {
        return userMapper.deleteUser(username);
    }

    @Override
    public int updateUser(Users users) {
        return userMapper.updateUser(users);
    }

    @Override
    public Users getByUserName(String username) {
        return userMapper.getByUserName(username);
    }

    @Override
    public List<Users> getAllUser() {
        return userMapper.getAllUser();
    }

    @Override
    public PageInfo<Users> findAll(int pageNum, int pageSize) {
        PageMethod.startPage(pageNum, pageSize);
        List<Users> allUser = userMapper.getAllUser();
        return new PageInfo<>(allUser);
    }
}

6.写controller层

package com.jkk.springboot_mybatis.controller;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.jkk.springboot_mybatis.domain.Users;
import com.jkk.springboot_mybatis.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author jkk
 */
@RestController
@RequestMapping("/user")
public class MybatisTestController{
    @Autowired
    private UserService userService;

    /**
     * 插入功能
     * @param users
     * @return
     */
    @PostMapping("")
    public int add(@RequestBody Users users){
        return userService.adduser(users);
    }

    /**
     * 查询功能
     * @return
     */
    @GetMapping("/list")
    public List<Users> getAll(){
        return userService.getAllUser();
    }
    @GetMapping("/list1/{pageNum}/{pageSize}")
    public PageInfo getAllUser(@PathVariable("pageNum") int pageNum, @PathVariable("pageSize") int pageSize) {
        return userService.findAll(pageNum, pageSize);
    }

    @DeleteMapping("/{username}")
    public int deleteUser(@PathVariable("username") String username){
        return userService.deleteUser(username);
    }
}

当然还需要配置yml文件

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/worktest?characterEncoding=UTF-8
    username: root
    password:
    type: com.alibaba.druid.pool.DruidDataSource
mybatis:
  type-aliases-package: com.jkk.springboot_mybatis.domain
  mapper-locations: classpath:mapper/*.xml
  configuration:
    map-underscore-to-camel-case: true
# 设置日志级别
logging:
  level:
    root: DEBUG
    com.jkk: debug

pagehelper:
  helper-dialect: mysql
  reasonable: true
  support-methods-arguments: true
  params: count=countSql

以上就是Springboot整合mybatis的全部过程,可以通过postman或者浏览器测试(只对分页做测试)
在这里插入图片描述

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

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

相关文章

vim 对js文件和txt的操作不同

vim 对js文件和txt的操作不同 https://www.runoob.com/w3cnote/ascii.html 同样一段话&#xff0c;vim 123.txt 和 vim 123.js &#xff0c;将下面这些内容复制&#xff0c;然后粘贴&#xff0c; 显示的效果不一样 .js文件 会把 0D 0A 变换为 0A 09 import { request } from…

图像去模糊:RSBlur 数据集以及模糊图像合成方法

本内容主要介绍图像去模糊数据集 RSBlur&#xff0c;以及逼真模糊图像合成方法。 论文&#xff1a;Realistic Blur Synthesis for Learning Image Deblurring 代码&#xff08;官方&#xff09;&#xff1a;https://github.com/rimchang/RSBlur 1.1 背景 运动模糊是由曝光…

89C52RC普中单片机-4

20230629 Thusday lcd1602代码 lcd1602.c #include <REGX52.H>//引脚配置&#xff1a; sbit LCD_RSP2^6; sbit LCD_RWP2^5; sbit LCD_ENP2^7; #define LCD_DataPort P0//函数定义&#xff1a; /*** brief LCD1602延时函数&#xff0c;12MHz调用可延时1ms* param 无*…

UNet Pytorch实现

用于图像分割的不同种类的Unet模型的实现 UNet - U-Net&#xff1a; 用于生物医学图像分割的卷积网络 https://arxiv.org/abs/1505.04597RCNN-UNet - 基于U-Net的递归残差卷积神经网络&#xff08;R2U-Net&#xff09;用于医学图像分割 https://arxiv.org/abs/1802.06955Atten…

ROS学习总结(一)

渐渐开始接触项目了&#xff0c;准备把以前学习的ros做一些总结&#xff0c;以致孰能生巧。 ros分布框架学习 vscode使用ros节点和包 vscode使用 下载&#xff1a;https://code.visualstudio.com/ 安装&#xff1a;sudo dpkg -i code(tap补全) code 能快捷启动。 插件安装&am…

django.db.utils.OperationalError: no such table: onlyoffice_customuser

我写了个类 Curstomuser 重新运行命令&#xff1a; >python manage.py makemigrations就报错了&#xff1a; 我以为是自己设计的类有问题&#xff0c;结果发现是因为我在其它 py 文件中进行了数据库查询。 而 Django 架构让我忽略了代码运行的前后关系。。。 先注释掉其它…

【STM32】keil MDK-Arm 5.38 功能详解

一、基本概念二、软件安装三、软件介绍3.1 Intro3.2 keil菜单栏3.21 file选项3.22 Edit 选项3.23 View选项3.24 Project选项3.25 Flash选项3.26 Debug选项3.27 Peripherals选项3.28 Tools选项3.29 SVCS选项3.2.10 Window选项3.2.11 Help选项 3.3 keil工具栏 四、设置与项目设置…

七牛云下载文件(显示在浏览器上)

最近在做关于如何将七牛云的文件下载下来&#xff0c;且在浏览器页面展示下载文件。 首先&#xff0c;我们需要注册七牛云账号 七牛云官网。 选择个人账户即可&#xff0c;若是需要企业账户&#xff0c;则可以选择企业账户。 注册成功绑定邮箱后&#xff0c;我们可以创建存储…

NIO三大组件和ByteBuffer

目录 一、NIO三大组件 1、Channel 2、Buffer 3、Selector 二、ByteBuffer 1、基本使用 2、内部结构 3、常用方法 allocate方法 读取方法 字符串与ByteBuffer互转 Scattering Reads 4、念包、半包问题 三、文件编程 1、FileChannel 2、两个Channel传输数据 3、…

解决 pyecharts 地图不显示的问题

总结 在 pyecharts 中如果修改了 online host&#xff0c;会导致绘制的地图显示不全&#xff0c;需要将 host 改回默认的 https://assets.pyecharts.org/assets/ 细节 最近需要使用 pyecharts 绘制中国地图&#xff0c;按官网的示例代码https://github.com/pyecharts/pyecha…

LLM - ChatGLM-6B (General Language Model) 的工程配置

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://blog.csdn.net/caroline_wendy/article/details/131104546 Paper&#xff1a;GLM: General Language Model Pretraining with Autoregressive Blank Infilling ChatGLM是通用的预训练语…

Tower 10:Mac平台Git客户端软件

Tower是一款Mac OS X系统上的Git客户端软件&#xff0c;它提供了丰富的功能和工具&#xff0c;帮助用户更加方便地管理和使用Git版本控制系统。 以下是Tower的一些特点&#xff1a; 1. 界面友好&#xff1a;Tower的界面友好&#xff0c;使用户能够轻松地掌握软件的使用方法。 …

数据库表结构设计---多表

这里写目录标题 多表设计一对多简介物理外键需求分析sql语句添加物理外键idea图形化工具设置外键 一对一多对多二级目录二级目录 多表设计 一对多 简介 一个表的某个字段&#xff0c;对应一个表 父表 子表 物理外键 需求分析 sql语句添加物理外键 设置物理外键的sql语句 为…

【强化学习】常用算法之一 “SAC”

作者主页&#xff1a;爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typeblog个…

Ameya360:广和通发布新一代5G FWA解决方案

为满足日益增长的5G宽带连接需求&#xff0c;提升FWA部署的经济效益和技术可行性&#xff0c;广和通在MWCS 2023期间发布了基于新一代5G模组FG190&FG180的5G FWA整体解决方案&#xff0c;为FWA等移动终端提供了灵活、便捷、高效、可靠的联网方案&#xff0c;促进FWA快速迭代…

SC2161旋变数字转换器可pin对pin兼容AD2S1210

SC2161 是一款 10 位至 16 位分辨率旋变数字转换器&#xff0c;集成片上可编程正弦波振荡器&#xff0c;为旋变器提供正弦波激励。可pin对pin兼容AD2S1210。 转换器的正弦和余弦输入端允许输入 3.15 Vp−p 27%、频率为 2 kHz 至 20 kHz 范围内的信号。Type II 伺服环路用于跟踪…

基于51单片机的智能照明系统

目录 基于51单片机的智能照明系统一、原理图二、部分代码三、视频演示 基于51单片机的智能照明系统 功能&#xff1a; 1.通过LCD屏幕显示实时时间、光强和物体等 2.通过DS1302获取实时时间 3.通过按键调整灯的开关时间和手自动设置手动模式下手动开灯 4.蜂鸣器报警功能 5.上位…

“因构建 而可见”,亚马逊云科技中国峰会助力企业数字化转型升级

过去十年&#xff0c;数字化转型的浪潮携带着机遇和挑战席卷而来&#xff0c;几乎每个企业都在做数字化转型&#xff0c;开始向大数据、人工智能等新技术寻求生产力的突破。但随着数字化转型深入&#xff0c;很多企业开始感受到数字化投入的成本压力&#xff0c;加之新技术正带…

ML算法——Support Vector Machine随笔【机器学习】

文章目录 4、Support Vector Machine (SVM)4.1、理论部分4.1.1、更优的决策边界4.1.2、解决低维不可分问题 4.2、sklearn 实现4.2.1、SVM 分类&#xff08;SVC&#xff09;4.2.2、SVM回归&#xff08;SVR&#xff09;4.2.3、网格调参 4.3、案例 4、Support Vector Machine (SVM…

用Java编写Groovy脚本,然后用命令行执行该脚本

1、Groovy 语言简介 Groovy 是 Apache 旗下的一门基于 JVM 平台的动态/敏捷编程语言Groovy 可以与 Java 语言无缝对接&#xff0c;在写 Groovy 的时候如果忘记了语法可以直接按Java的语法继续写&#xff0c;也可以在 Java 中调用 Groovy 脚本&#xff0c;都可以很好的工作Groo…