Java中使用MyBatis-Plus操作数据库的实例

目录
  • MyBatis-Plus
  • 官网
  • 使用
    • 测试数据插入数据库
    • 测试查询所有
    • 测试删除数据
    • 测试修改数据

MyBatis-Plus

MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

MyBatis可以直接在xml中通过SQL语句操作数据库,很灵活。但其操作都要通过SQL语句进行,就必须写大量的xml文件,很麻烦。mybatis-plus就很好的解决了这个问题。

官网

MyBatis-Plus 官方文档

使用

这里我用的数据库是mysql8,新建test数据库,并创建user表

建表语句

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (
  `id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '主键',
  `name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '姓名',
  `age` int(0) NULL DEFAULT NULL COMMENT '年龄',
  `address` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '地址',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

SET FOREIGN_KEY_CHECKS = 1;

引入依赖

这里我用的数据库是mysql8

     <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.3</version>
        <relativePath/>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-test</artifactId>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.1</version>
        </dependency>
        <!--Druid连接池-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.9</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.25</version>
        </dependency>
    </dependencies>

分别创建application.yml及application-dev.yml文件

application.yml

# Spring配置
spring:
  # 环境设置
  profiles:
    active: dev
  # 模板引擎
  thymeleaf:
    mode: HTML
    encoding: utf-8
    # 禁用缓存
    cache: false
  # 服务模块
  devtools:
    restart:
      # 热部署开关
      enabled: true

application-dev.yml

# 开发环境配置
server:
  # 服务器的HTTP端口,默认为80
  port: 8081

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    druid:
      url: jdbc:mysql://localhost:3307/test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
      username: root
      password: 123456
      initial-size: 5
      min-idle: 10
      max-active: 20
      max-wait: 60000
      time-between-eviction-runs-millis: 60000
      min-evictable-idle-time-millis: 300000
      validation-query: select 'x'
      test-while-idle: true
      test-on-borrow: false
      test-on-return: false
      pool-prepared-statements: true
      max-open-prepared-statements: 50
      max-pool-prepared-statement-per-connection-size: 20

编写实体类User.java,这里用到lombok

@Data
public class User {
    private String id;
    private String name;
    private Integer age;
    private String address;
}

创建mapper文件夹,并编写 Mapper 类 UserMapper.java

public interface UserMapper extends BaseMapper<User> {

}

在 Spring Boot 启动类中添加 @MapperScan 注解,扫描 Mapper 文件夹:

@SpringBootApplication
@MapperScan("com.mybatisplus.mapper")
public class MainApplication {
    public static void main(String[] args)
    {
        SpringApplication.run(MainApplication.class, args);
    }
}

添加测试类,进行功能测试:

测试数据插入数据库

    @Autowired
    private UserMapper userMapper;

    @Test
    public void testInsert() {
        System.out.println(("----- insert method test ------"));
        User user = new User();
        // 自动生成主键,例如550E8400-E29B-11D4-A716-446655440000
        String id = UUID.randomUUID().toString();
        String replaceAll = id.replaceAll("-", "");
        //550E8400E29B11D4A716446655440000
        user.setId(replaceAll);
        user.setName("张三");
        user.setAge(21);
        user.setAddress("北京市海淀区");
        int insert = userMapper.insert(user);
        if(insert>0){
            System.out.println("插入成功:"+user);
        }else{
            System.out.println("插入失败!");
        }
    }

测试查询所有

    @Autowired
    private UserMapper userMapper;   

    @Test
    public void testSelect() {
        System.out.println(("----- selectAll method test ------"));
        List<User> userList = userMapper.selectList(null);
        userList.forEach(System.out::println);
    }

测试删除数据

删除姓名等于“张三”的记录

    @Autowired
    private UserMapper userMapper;

    @Test
    public void testDelete() {
        System.out.println(("----- delete method test ------"));
        LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
        User user = new User();
        user.setName("张三");
        wrapper.eq(User::getName, user.getName());
        int delete = userMapper.delete(wrapper);
        if(delete>0){
            System.out.println("删除成功:"+user);
        }else{
            System.out.println("删除失败!");
        }
    }

测试修改数据

修改前先执行下插入

修改还可以用userMapper.updateById(T entity)方法来修改,传入一个实体类

    @Autowired
    private UserMapper userMapper;

    @Test
    public void testUpdate() {
        System.out.println(("----- update method test ------"));
        LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
        User user = new User();
        user.setName("张三");
        wrapper.eq(User::getName, user.getName());
        User userNew = new User();
        userNew.setName("李四");
        int update = userMapper.update(userNew, wrapper);
        if(update>0){
            System.out.println("修改成功:"+user);
        }else{
            System.out.println("修改失败!");
        }
    }

到此这篇关于Java中使用MyBatis-Plus操作数据库的实例的文章就介绍到这了,更多相关MyBatis-Plus操作数据内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • mybatis-plus实体类中出现非数据库映射字段解决办法

    在使用mybatis 或者其它mybatis的二次开发框架时(例如mybatis-plus),有时候数据库中的字段和实体类中的字段可能不一致.例如数据库中只有3个字段,而实体类中除了数据库中对应映射的三个字段以外还有多余的其余字段,例如实体类中有5个字段.那么运行就会报错 如果需要在mybatis映射实体类中加入非数据库映射字段.那么可以使用@TableField(exist = false)进行标识对应字段不属于数据库的映射字段即可. 当然可以点击进入@TableField(exist = f

  • 使用Mybatis-plus策略自动更新数据库时间失败问题解决

    引言 在mybatis项目中,我们一般会使用它的插件plus以扩充它的基本查询功能.另一方面,在阿里巴巴开发手册的规范中也提到,在数据库表创建的时候,一般会有一个create_time和update_time字段,它们的建表语句往往如下: 'create_time' timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, 'update_time' timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE C

  • MyBatis-plus+达梦数据库实现自动生成代码的示例

    先说点什么 mybatis-plus是一款增强版的mybatis,功能强大,可以很大程度的简化开发. 然而达梦数据库比较小众,虽然官方说mybatis-plus支持达梦数据库,但是使用起来遇到了很多问题. 这篇文章主要讲如何使用mybatis-plus访问达梦数据库,并使用逆向工程自动生成代码. =.=对了 这是个使用spring boot的项目. (配置)POM文件,引入所需要的依赖 <dependencies> <dependency> <groupId>org.s

  • 搭建MyBatis-Plus框架并进行数据库增删改查功能

    搭建MyBatis-Plus框架并进行数据库添加 MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发.提高效率而生. 1.搭建环境 Jdk:jdk1.8.0_261 Idea:IntelliJ IDEA Maven:apache-maven-3.3.6 MySQL:mysql-5.5.61 2.项目搭建 3.配置maven 4.项目结构 创建数据库 CREATE DATABASE tzy03; USE tzy03;

  • 关于Mybatis-Plus字段策略与数据库自动更新时间的一些问题

    字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断" 问题描述: 当字段策略为 0 "忽略判断" 的时候,如果实体和数据库有字段是需要自动更新的,例如update_time,更新某条记录的时候自动刷新update_time,理论上我们在业务控制的时候是不需要设置update_time的,利用数据库特性就好,但是在该字段策略下,业务逻辑要更新字段(没有主动设置 update_time),这时候因为忽略判断,

  • 使用springboot整合mybatis-plus实现数据库的增删查改示例

    1.准备数据库中的表及表中的数据 /* SQLyog Ultimate v12.09 (64 bit) MySQL - 5.6.11 : Database - mp ********************************************************************* */ /*!40101 SET NAMES utf8 */; /*!40101 SET SQL_MODE=''*/; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQ

  • java 中mongodb的各种操作查询的实例详解

    java 中mongodb的各种操作查询的实例详解 一. 常用查询: 1. 查询一条数据:(多用于保存时判断db中是否已有当前数据,这里 is  精确匹配,模糊匹配 使用regex...) public PageUrl getByUrl(String url) { return findOne(new Query(Criteria.where("url").is(url)),PageUrl.class); } 2. 查询多条数据:linkUrl.id 属于分级查询 public Lis

  • Java中使用MyBatis-Plus操作数据库的实例

    目录 MyBatis-Plus 官网 使用 测试数据插入数据库 测试查询所有 测试删除数据 测试修改数据 MyBatis-Plus MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发.提高效率而生. MyBatis可以直接在xml中通过SQL语句操作数据库,很灵活.但其操作都要通过SQL语句进行,就必须写大量的xml文件,很麻烦.mybatis

  • java中ResultSet遍历数据操作

    1.查找数据库中表的列名 <pre name="code" class="html">String sql = "select *from tblmetadatainfo"; ResultSet rs = MySqlHelper.executeQuery(sql, null); String str=""; try { ResultSetMetaData rsmd = rs.getMetaData(); for (

  • 详解Java数据库连接JDBC基础知识(操作数据库:增删改查)

    一.JDBC简介 JDBC是连接java应用程序和数据库之间的桥梁. 什么是JDBC? Java语言访问数据库的一种规范,是一套API. JDBC (Java Database Connectivity) API,即Java数据库编程接口,是一组标准的Java语言中的接口和类,使用这些接口和类,Java客户端程序可以访问各种不同类型的数据库.比如建立数据库连接.执行SQL语句进行数据的存取操作. JDBC代表Java数据库连接. JDBC库中所包含的API任务通常与数据库使用: 连接到数据库 创

  • Java中精确的浮点运算操作示例

    本文实例讲述了Java中精确的浮点运算操作.分享给大家供大家参考,具体如下: Java中浮点运算对于很多值浮点数都是采用其能够表示的离目标值最近的数来表示,这有可能会在计算中带来不易觉察的误差. 如下所例: public class ssss { public static void main(String[] ages){ double d1=2.07; double d2=1.03; System.out.println(d1+d2); } } 结果: 虽然计算结果离精确值误差很小,但其不是

  • Java中常见的日期操作(取值、转换、加减、比较)

    Java 的开发过程中免不了与 Date 类型纠缠,准备总结一下项目经常使用的日期相关操作,JDK 版本 1.7,如果能够帮助大家节约那么几分钟起身活动一下,去泡杯咖啡,便是极好的,嘿嘿.当然,我只提供了可行的解决方案,并不保证是最佳实践,欢迎讨论. 1. 日期取值 在旧版本 JDK 的时代,有不少代码中日期取值利用了 java.util.Date 类,但是由于 Date 类不便于实现国际化,其实从 JDK1.1 开始,就更推荐使用 java.util.Calendar 类进行时间和日期方面的处

  • Java中Properties类的操作实例详解

    Java中Properties类的操作实例详解 知识学而不用,就等于没用,到真正用到的时候还得重新再学.最近在看几款开源模拟器的源码,里面涉及到了很多关于Properties类的引用,由于Java已经好久没用了,而这些模拟器大多用Java来写,外加一些脚本语言Python,Perl之类的,不得已,又得重新拾起.本文通过看<Java编程思想>和一些网友的博客总结而来,只为简单介绍Properties类的相关操作.  一.Java Properties类 Java中有个比较重要的类Properti

  • java中对List分段操作的实例

    java中对List分段操作的实例 问题:假设A系统查询出来一个很大很大的List,现在B系统想要得到这个List来导出报表,但是B系统部署环境条件有限,内存容不下这么大一个List,这时候我们就需要把List切分,然后再一个一个导出了. 如果按照传统方式,可能会比较繁琐,我们可以运用List里面的subList方法来实现,代码如下: import java.util.ArrayList; import java.util.List; public class listTest { public

  • Java中对象的比较操作实例分析

    本文实例讲述了Java中对象的比较操作.分享给大家供大家参考,具体如下: 一 点睛 在Java中,有两种方式可用于对象间的比较: 利用"=="运算符:用于比较两个对象的内存地址值(引用值)是否相等. 利用equals()方法:用于比较两个对象的内容是否一致. 二 "=="运算符的比较 1 代码 public class CompareObject1 { public static void main( String[] args ) { String str1 =

  • Java中final与继承操作实例分析

    本文实例讲述了Java中final与继承操作.分享给大家供大家参考,具体如下: 一 点睛 final在Java中被称为终结器. 1 在基类的某个方法加了final,那么在子类中该方法被禁止二次"改造". 2 通过在类的前面添加final关键字,便可以阻止基类被继承. 二 实战1--final标记的方法不能被子类覆写实例 1 代码 class Person { // 此方法声明为final不能被子类覆写 final public String talk() { return "

随机推荐