本文共 4867 字,大约阅读时间需要 16 分钟。
Mybatis是一个很火的轻量级的持久层框架。通常需要写xml文件,编写SQL就可方便的去操作数据库。对于操作数据库的工具来说很是灵活,这里不过多赘述了。
Mybatis-Plus(简称MP)是Mybatis的增强工具,对Mybatis只做增强不做修改。有更高的效率。
内部有封装常用的CURD操作,可达到调用方法操作数据库,而无需写SQL语句。
下面就是实战去体验Plus的对于单表CRUD的高效。
创建一个名为user的数据库:
SET NAMES utf8mb4;SET FOREIGN_KEY_CHECKS = 0;-- ------------------------------ Table structure for user-- ----------------------------DROP TABLE IF EXISTS `user`;CREATE TABLE `user` ( `id` int(11) NOT NULL, `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `age` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `own_email` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ------------------------------ Records of user-- ----------------------------INSERT INTO `user` VALUES (1, 'JoJo', '23', '1215135@jojo.com');INSERT INTO `user` VALUES (2, 'kit', '22', '63362@kit.com');INSERT INTO `user` VALUES (23, 'bii', '22', '354643@bii.com');SET FOREIGN_KEY_CHECKS = 1;
com.baomidou mybatis-plus-boot-starter 3.1.0 org.springframework.boot spring-boot-starter-test test mysql mysql-connector-java runtime org.springframework.boot spring-boot-starter-jdbc
# 配置数据源spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver name: root password: 12345 url: jdbc:mysql:///test
@Data@TableName("user") // 表名的映射public class UserPO { // 指定id,id的类型 @TableId(value = "id", type = IdType.AUTO) private Integer id; // 指定字段名的映射 @TableField("name") private String name; // 指定字段名的映射 @TableField("age") private String age; // 指定字段名的映射 @TableField("own_email") private String Email;}
实体类使用了lombok简化书写
/** * @author Hacah * @date 2021/5/19 10:00 */public interface UserMapper extends BaseMapper{ }
继承Mybatis-Plus的BaseMapper
5-编写测试代码
@Autowiredprivate UserMapper userMapper;@Testvoid contextLoads() { ListuserPOS = userMapper.selectList(null); System.out.println(userPOS);}
结果:
[UserPO(id=1, name=JoJo, age=23, Email=1215135@jojo.com), UserPO(id=2, name=kit, age=22, Email=63362@kit.com)]
通过id查询一条数据。
// 1.查询一个UserPO userPO = userMapper.selectById(1);System.out.println(userPO);
结果:
UserPO(id=1, name=JoJo, age=23, Email=1215135@jojo.com)
通过条件查询一条数据,若查询条数多于1条会报错。
// 2.使用条件查询一个QueryWrapperuserPOQueryWrapper = new QueryWrapper<>();userPOQueryWrapper.eq("age", "22"); // SQL上增加age = 22条件System.out.println(userMapper.selectOne(userPOQueryWrapper));// SELECT id,name,age,own_email AS Email FROM user WHERE age = 22;
QueryWrapper类能够构造查询的条件
QueryWrapper
这是拼接条件的类,传入该类可以构造sql的操作的条件
比如or、and、= 、between… in…等等
通过Map查询多条数据。
// 3.使用map查询多条数据HashMapstringObjectHashMap = new HashMap<>();stringObjectHashMap.put("age", 22);System.out.println(userMapper.selectByMap(stringObjectHashMap));
结果:
[UserPO(id=2, name=kit, age=22, Email=63362@kit.com), UserPO(id=3, name=bii, age=22, Email=354643@bii.com)]
通过id进行批量查询
// 4.使用个id查询更多数据ArrayListuserPOS = new ArrayList<>();userPOS.add(1);userPOS.add(2);System.out.println(userMapper.selectBatchIds(userPOS));
结果:
[UserPO(id=1, name=JoJo, age=23, Email=1215135@jojo.com), UserPO(id=2, name=kit, age=22, Email=63362@kit.com)]
传入一个实体类新增一条数据
// 5. 新增数据UserPO userPO = new UserPO();userPO.setAge("12");userPO.setName("fibs");userPO.setEmail("5332633@fibs.com");userMapper.insert(userPO);
结果:
1.updateById
通过id更新,传入一个实体类
// 6.修改数据UserPO userPO = new UserPO();userPO.setId(1);userPO.setAge("31");userMapper.updateById(userPO);
结果:
2.update
传入一个 实体类 和 条件类,更新数据
// 6.通过条件修改数据UserPO userPO = new UserPO();userPO.setAge("31");QueryWrapperuserPOQueryWrapper = new QueryWrapper<>();userPOQueryWrapper.isNotNull("age"); // 构造条件where age != nulluserMapper.update(userPO,userPOQueryWrapper);
结果:
age不为null的全部修改成31
删除和select类似,有一下方法:
deleteById 通过id删除
deleteByMap 使用map删除
delete 通过条件删除
deleteBatchIds 通过id批量删除
这里只演示delete,使用条件删除数据
删除id小于等于1的数据
userMapper.delete(new QueryWrapper().le("id",1));
结果:
本博客是一个入门的描述。先大概了解MybatisPlus的增强之处,并通过实践去体会,去认证它的运行结果。让我们对此生映像,以便后续的使用,解决我们后续遇到的问题就是我们一直学习的目的。
通过条件删除这里只演示delete,使用条件删除数据
删除id小于等于1的数据
userMapper.delete(new QueryWrapper().le("id",1));
结果:
[外链图片转存中…(img-TITefKFc-1621405974289)]
本博客是一个入门的描述。先大概了解MybatisPlus的增强之处,并通过实践去体会,去认证它的运行结果。让我们对此生映像,以便后续的使用,解决我们后续遇到的问题就是我们一直学习的目的。
转载地址:http://leugf.baihongyu.com/