当前位置: 首页 > news >正文

[学习笔记]-MyBatis-Plus简介

简介

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

简言之就是对单表的增删改查有了很好的封装。基本不用再单独写sql语句了。目前此类基于mybats的增强工具有很多,但是目前MP可以算是国内最主流的了。而且它的功能也是最全的。

github地址:https://github.com/baomidou/mybatis-plus

gitee地址:https://gitee.com/baomidou/mybatis-plus

MP初体验

这里我们创建一个测试项目MPDemo来初步体验下如何使用MP。省略创建项目步骤和数据库表创建过程。

1.测试表结构【user】

!(https://img-blog.csdnimg.cn/direct/3ea41e6c315d48bea6ab8b5c2aa41a68.png)

2.springboot三板斧之引入依赖

<dependencies><!-- springboot --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!-- MP最新版本 --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.2</version></dependency><!-- mysql 驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency>
</dependencies>

3.springboot三板斧之添加配置

# 数据源配置
spring:datasource:type: com.zaxxer.hikari.HikariDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://yourip:3306/yourdb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=trueusername: rootpassword: 123456# Mybatis Plus配置
mybatis-plus:configuration:#打印日志log-impl: org.apache.ibatis.logging.stdout.StdOutImpl#下划线转驼峰map-underscore-to-camel-case: true

4.创建user表的实体映射类

@Data
@TableName("user")
public class User implements Serializable {/*** 自增id*/private Long id;/*** 姓名*/private String name;/*** 年龄*/private Integer age;/*** 邮件*/private String email;/*** 地址*/private String address;/*** 创建日期*/private Date createtime;/*** 更新日期*/private Date updatetime;}

5.创建user表的mapper类

//这里仅仅集成MP的BaseMapper即可
public interface UserMapper extends BaseMapper<User> {}

6.springboot三板斧之启动类注释

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

这里通过@MapperScan来指定扫描所有mapper的基础包路径。

其实如果Mapper类中如果有@Mapper注解的话,其实在启动类上是不需要增加@MapperScan的。

7.添加测试类

@SpringBootTest
public class MapperTest {@Autowiredprivate UserMapper userMapper;@Testpublic void testInsert() {User user = new User();user.setName("张三");user.setAge(2);user.setEmail("zhangsan@163.com");user.setAddress("北京朝阳");int result = this.userMapper.insert(user);System.out.println("打印插入结果===>" + result);System.out.println("打印插入后user的id值===>" + user.getId());}
}

输出结果:

==>  Preparing: INSERT INTO user ( id, name, age, email, address ) VALUES ( ?, ?, ?, ?, ? )
==> Parameters: 1546670400971255809(Long), 张三(String), 2(Integer), zhangsan@163.com(String), 北京朝阳(String)
<==    Updates: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7397c6]
打印插入结果===>1
打印插入后user的id值===>1546670400971255809

可能遇到的问题

1.@Autowired标识红色

在这里插入图片描述

原因是:我们通过在启动类添加注释@MapperScan(“com.mayuanfei.mpdemo.dao.mapper”)来扫描所有的mapper类的

但是idea没有发现有具体的注释标识被spring容器所管理,所以这里给出警告。

解决方式有两种:

  • 启动类注释不变,把@Autowired修改为@Resource注解。
  • 启动类去掉@MapperScan(“com.mayuanfei.mpdemo.dao.mapper”),在UserMaper类上加上@Mapper注解。

2.user表中的id值不符合我们的预期

例子中,我们打印出来的user的id值为:1546670400971255809。本来想着应该是1。这是因为MP默认生成id的算法是通过雪花算法来生成的。如果要按照数据库中的自增来生成id需要在实体类增加一个注解:

http://www.lryc.cn/news/380161.html

相关文章:

  • 2024.6.23 刷题总结
  • mysql查询不同用户(操作记录)的最新一条记录
  • Java中如何使用设计模式来解决编程问题?
  • 单机、集群和分布式
  • qt开发-10_LineEdit
  • 福昕PDF编辑器快速去除PDF水印方法
  • Cloudflare 常用操作
  • elementUI的table使用展开功能( type=“expand“ ),展开时合起上一次展开的内容,始终保持展开内容为一个,并且再次点击合起自身
  • 【金】?Y? python网页前端streamlit
  • 数据仓库之Lambda架构
  • Apriori 处理ALLElectronics事务数据
  • Content Provider:深入解析Android数据共享的核心组件
  • 069、Python 函数的递归调用
  • 数仓开发那些事_番外
  • Vue3+TypeScript项目实战——打造雨雪交加的智慧城市
  • 经典游戏案例:植物大战僵尸
  • Go 与 Java 字符编码选择:UTF-8 与 UTF-16 的较量
  • vscode+picgo+gitee实现Markdown图床
  • 【thinkphp问题栏】tp5.0分页技巧
  • 获取时间戳是使用System.currentTimeMillis()还是使用new Date().getTime()(阿里开发规范)?
  • 仿饿了么加入购物车旋转控件 - 自带闪转腾挪动画 的按钮
  • Docker部署nacos集群
  • centos查找文件 及 操作写入的进程
  • 构建高可用Java微服务架构的秘籍
  • VBA学习(18):VBA制作任意工作表均可使用的聚光灯
  • 【STM32-启动文件 startup_stm32f103xe.s】
  • 51学习记录(一)——51介绍及震动感应灯
  • 2024GLEE生活暨教育(上海)博览会,8月20-22日,国家会展中心(上海)
  • debug调试高级功能 断点、布局 及Android Studio常用快捷按键使用详情
  • 51单片机STC89C52RC——6.1 中断系统