mybatis-plus教程--ActiveRecord
2026/9/16 23:37:04 网站建设 项目流程

完整代码

https://github.com/pbteach/mybatis-plus-test

完整讲义

https://yjoffer.com/project_preposition/mybatis/mybatis.html
https://yjoffer.com/project_preposition/mybatisplus/mybatisplus.html

准备环境

创建数据库和表:

-- 创建测试表 CREATE TABLE `tb_user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `user_name` varchar(20) NOT NULL COMMENT '用户名', `password` varchar(20) NOT NULL COMMENT '密码', `name` varchar(30) DEFAULT NULL COMMENT '姓名', `age` int(11) DEFAULT NULL COMMENT '年龄', `email` varchar(50) DEFAULT NULL COMMENT '邮箱', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; -- 插入测试数据 INSERT INTO `tb_user` (`id`, `user_name`, `password`, `name`, `age`, `email`) VALUES ('1', 'zhangsan', '123456', '张三', '18', 'test1@pbteach.com'); INSERT INTO `tb_user` (`id`, `user_name`, `password`, `name`, `age`, `email`) VALUES ('2', 'lisi', '123456', '李四', '20', 'test2@pbteach.com'); INSERT INTO `tb_user` (`id`, `user_name`, `password`, `name`, `age`, `email`) VALUES ('3', 'wangwu', '123456', '王五', '28', 'test3@pbteach.com'); INSERT INTO `tb_user` (`id`, `user_name`, `password`, `name`, `age`, `email`) VALUES ('4', 'zhaoliu', '123456', '赵六', '21', 'test4@pbteach.com'); INSERT INTO `tb_user` (`id`, `user_name`, `password`, `name`, `age`, `email`) VALUES ('5', 'sunqi', '123456', '孙七', '24', 'test5@pbteach.com');

ActiveRecord

ActiveRecord(简称AR)一直广受动态语言( PHP 、 Ruby 等)的喜爱,而 Java 作为准静态语言,对于 ActiveRecord 往往只能感叹其优雅,所以我们也在 AR 道路上进行了一定的探索,喜欢大家能够喜欢。

什么是ActiveRecord?

ActiveRecord也属于ORM(对象关系映射)层,由Rails最早提出,遵循标准的ORM模型:表映射到记录,记录映射到对象,字段映射到对象属性。配合遵循的命名和配置惯例,能够很大程度的快速实现模型的操作,而且简洁易懂。

ActiveRecord的主要思想是:

  • 每一个数据库表对应创建一个类,类的每一个对象实例对应于数据库中表的一行记录;通常表的每个字段在类中都有相应的Field;
  • ActiveRecord同时负责把自己持久化,在ActiveRecord中封装了对数据库的访问,即CURD;;
  • ActiveRecord是一种领域模型(Domain Model),封装了部分业务逻辑;

开启AR之旅

在MP中,开启AR非常简单,只需要将实体对象继承Model即可。

packagecom.pbteach.mp.pojo;importcom.baomidou.mybatisplus.annotation.IdType;importcom.baomidou.mybatisplus.annotation.TableField;importcom.baomidou.mybatisplus.annotation.TableId;importcom.baomidou.mybatisplus.annotation.TableName;importcom.baomidou.mybatisplus.extension.activerecord.Model;importlombok.AllArgsConstructor;importlombok.Data;importlombok.NoArgsConstructor;@Data@NoArgsConstructor@AllArgsConstructorpublicclassUserextendsModel<User>{privateLongid;privateStringuserName;privateStringpassword;privateStringname;privateIntegerage;privateStringemail;}

根据主键查询

@RunWith(SpringRunner.class)@SpringBootTestpublicclassUserMapperTest{@AutowiredprivateUserMapperuserMapper;@TestpublicvoidtestAR(){Useruser=newUser();user.setId(2L);Useruser2=user.selectById();System.out.println(user2);}}

新增数据

@RunWith(SpringRunner.class)@SpringBootTestpublicclassUserMapperTest{@AutowiredprivateUserMapperuserMapper;@TestpublicvoidtestAR(){Useruser=newUser();user.setName("刘备");user.setAge(30);user.setPassword("123456");user.setUserName("liubei");user.setEmail("liubei@pbteach.com");booleaninsert=user.insert();System.out.println(insert);}}

结果:

[main][com.pbteach.mp.mapper.UserMapper.insert]-[DEBUG]==>Preparing: INSERT INTO tb_user(user_name, password, name, age, email)VALUES(?, ?, ?, ?, ?)[main][com.pbteach.mp.mapper.UserMapper.insert]-[DEBUG]==>Parameters: liubei(String),123456(String), 刘备(String),30(Integer), liubei@pbteach.com(String)[main][com.pbteach.mp.mapper.UserMapper.insert]-[DEBUG]<==Updates:1

更新操作

@RunWith(SpringRunner.class)@SpringBootTestpublicclassUserMapperTest{@AutowiredprivateUserMapperuserMapper;@TestpublicvoidtestAR(){Useruser=newUser();user.setId(8L);user.setAge(35);booleanupdate=user.updateById();System.out.println(update);}}

结果:

[main][com.pbteach.mp.mapper.UserMapper.updateById]-[DEBUG]==>Preparing: UPDATE tb_user SETage=? WHEREid=?[main][com.pbteach.mp.mapper.UserMapper.updateById]-[DEBUG]==>Parameters:35(Integer),8(Long)[main][com.pbteach.mp.mapper.UserMapper.updateById]-[DEBUG]<==Updates:1

删除操作

@RunWith(SpringRunner.class)@SpringBootTestpublicclassUserMapperTest{@AutowiredprivateUserMapperuserMapper;@TestpublicvoidtestAR(){Useruser=newUser();user.setId(7L);booleandelete=user.deleteById();System.out.println(delete);}}

结果:

[main][com.pbteach.mp.mapper.UserMapper.deleteById]-[DEBUG]==>Preparing: DELETE FROM tb_user WHEREid=?[main][com.pbteach.mp.mapper.UserMapper.deleteById]-[DEBUG]==>Parameters:7(Long)[main][com.pbteach.mp.mapper.UserMapper.deleteById]-[DEBUG]<==Updates:1

根据条件查询

@RunWith(SpringRunner.class)@SpringBootTestpublicclassUserMapperTest{@AutowiredprivateUserMapperuserMapper;@TestpublicvoidtestAR(){Useruser=newUser();QueryWrapper<User>userQueryWrapper=newQueryWrapper<>();userQueryWrapper.le("age","20");List<User>users=user.selectList(userQueryWrapper);for(Useruser1:users){System.out.println(user1);}}}

结果:

[main][com.pbteach.mp.mapper.UserMapper.selectList]-[DEBUG]==>Preparing: SELECT id,user_name,password,name,age,email FROM tb_user WHERE age<=?[main][com.pbteach.mp.mapper.UserMapper.selectList]-[DEBUG]==>Parameters:20(String)[main][com.pbteach.mp.mapper.UserMapper.selectList]-[DEBUG]<==Total:2User(id=2,userName=lisi,password=123456,name=李四,age=20,email=test2@pbteach.com,address=null)User(id=6,userName=caocao,password=123456,name=曹操,age=20,email=test@pbteach.com,address=null)

pper.selectList]-[DEBUG] <== Total: 2

User(id=2, userName=lisi, password=123456, name=李四, age=20, email=test2@pbteach.com, address=null)
User(id=6, userName=caocao, password=123456, name=曹操, age=20, email=test@pbteach.com, address=null)

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询