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

MybatisPlus总结

一、MyBatis回顾

(1)什么是MyBatis:MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。MyBatis-Plus其实就是对MyBatis的加强。


SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (`id` bigint(20) NOT NULL COMMENT '主键ID',`name` varchar(30) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '姓名',`age` int(11) NULL DEFAULT NULL COMMENT '年龄',`email` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '邮箱',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, '张三', 18, 'zhangsan@qq.com');
INSERT INTO `user` VALUES (2, '李四', 18, 'lisi@qq.com');
INSERT INTO `user` VALUES (3, '王五', 18, 'wangwu@qq.com');
INSERT INTO `user` VALUES (4, '赵六', 18, 'zhaoliu@qq.com');
INSERT INTO `user` VALUES (5, '二狗', 18, 'ergou@qq.com');
INSERT INTO `user` VALUES (6, '飞云', 18, 'feiyun@qq.com');SET FOREIGN_KEY_CHECKS = 1;

二、什么是MyBatis-Plus

(1)MyBatis-Plus是MyBatis的增强,在MyBatis的基础上,只做增强而不做改变,是为了简化开发、提高效率而生。

(2)MyBatis-Plus所需要的依赖:

        它是第三方提供的的,需要我们手工来加:

        <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.2/version></dependency>

三、创建SpringBoot项目:

1、初始化SpringBoot项目:

2、手工加入mybatisPlus依赖:

3、 在application.yml文件中配置数据源(数据库连接信息):
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driver #其实不需要写,默认就是#其实你连接本地数据库,并且端口号为3306的话,只需要这样写 jdbc:mysql:///mpdb,这是localhost的简写url: jdbc:mysql://localhost:3306/mpdb?serverTimezone=UTCusername: rootpassword: 3333#获取打印日志,填写主包,我项目里面所有的类都写在这个主包下
logging:level:com.lifang.bootMybatispuls: debug
4、创建数据库表对应的实体类User:

创建实体类我们要习惯性的去序列化一下

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User implements Serializable {private Integer id;private String name;private Integer age;private String email;
}
5、创建持久层DAO接口:

        UserMapper 继承了BaseMapper<User>接口就自然而然就具备了增删改查的能力,对谁的增删改查呢?就是对这个泛型里面限定的这个实体类对应的表增删改查的能力

这个UserMapper 接口已经具备了对User这个实体类对应的表的增删改查的能力 

public interface UserMapper extends BaseMapper<User> {
}

@MapperScan:扫描持久层DAO接口所在的包名,创建DAO接口对应的代理对象 

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

四、测试通用的Mapper接口:

        现在这个mapper接口已经具备了对User这个实体类对应的表的增删改查的能力,现在我们来测试一下:

4.1、selectList:

@SpringBootTest
public class UserMapperTest {@Resourceprivate UserMapper userMapper;@Testpublic void testSelectAll(){List<User> users = userMapper.selectList(null);users.forEach(user-> System.out.println(user));}
}

        我们没有写查询语句,这个sql语句就是mybatisplus通过扫描这个实体,它产生的查询语句: 

4.2、insert: 

 @Testpublic void testInsert(){User user = new User(null,"花花",3,"huahau@qq.com");int num = userMapper.insert(user);System.out.println(num);}

         这个i d我给的是个null,但却插入了一个很长的值,这个实际上是因为它默认有一个雪花算法的策略,帮我们产生了一个id:-2090029054

        如果说你想继续沿用id自增的话,你得把表结构改成自增的字段,然后去设修改一下策略:

 4.3、delete:

    @Testpublic void testDelete(){int num = userMapper.deleteById(-2090029054);System.out.println(num);}

  @Testpublic void testDelete2(){User user = new User(-2090029054,"花花1",5,"huahau@qq.com");int num = userMapper.deleteById(user);//其实还是根据id删除,即使你其他信息写错了System.out.println(num);}

 4.4、update:

  @Testpublic void testDelete(){int num = userMapper.updateById(new User(666,"花花11",5,"huahau@qq.com"));System.out.println(num);}

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

相关文章:

  • 使用 mitmproxy 抓包 grpc
  • 【解决Jetson Nano 内存不足问题】纯命令行将 Conda 环境迁移到 SD 卡
  • 【RISC-V 指令集】RISC-V 向量V扩展指令集介绍(七)- 向量算术指令格式
  • 顺序表的应用
  • 2024-04-03-代码随想录算法训练营第一天[LeetCode704二分查找、LeetCode27移除元素]
  • [Go运行问题]/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_xx‘ not found
  • matrix-breakout-2-morpheus 靶机渗透
  • 爬虫 新闻网站 以湖南法治报为例(含详细注释) V1.0
  • 物联网实战--入门篇之(十)安卓QT--后端开发
  • [Java]网络编程
  • 重读Java设计模式: 适配器模式解析
  • MySQL面试题系列-9
  • 书生·浦语训练营二期第二次笔记
  • python_3
  • 【Python】 使用Apache Tika和Python实现zip、csv、xls等多格式文件文本内容提取
  • C语言如何将多维数组名作为函数参数?
  • 2013年认证杯SPSSPRO杯数学建模C题(第二阶段)公路运输业对于国内生产总值的影响分析全过程文档及程序
  • 《LeetCode力扣练习》代码随想录——二叉树(合并二叉树---Java)
  • openstack云计算(二)——使用Packstack安装器安装一体化OpenStack云平台
  • Flutter Don‘t use ‘BuildContext‘s across async gaps.
  • 基于SSM+Jsp+Mysql的个性化影片推荐系统
  • 循环队列的实现及应用——桶排序bucket_sort、基数排序radix_sort
  • ubuntu16如何使用高版本cmake
  • 电商-广告投放效果分析(KMeans聚类、数据分析-pyhton数据分析
  • 练习 16 Web [极客大挑战 2019]LoveSQL
  • C++——栈和队列容器
  • Java集合(个人整理笔记)
  • Redis -- 缓存穿透问题解决思路
  • 数据挖掘中的PCA和KMeans:Airbnb房源案例研究
  • 【ArcGIS微课1000例】0107:ArcGIS加载在线历史影像服务WMTS