MyBatis VS MyBatisPlus
所属分类 mybatis
浏览量 149
mybatis 是一个持久性框架,简化 jdbc 开发,使用 xml 或 注解 配置映射
MyBatis-Plus (MP)是 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,简化开发 提高效率
mybatis sql语句存放于 mapper (或Dao) 包下的 xml 配置文件中
@Mapper
public interface UserMapper {
@Select("SELECT * FROM users WHERE id = #{id}")
User getUserById(int id);
...
}
@Mapper
@Repository
public interface AccountMapper {
@Select("SELECT money FROM account WHERE user_id = #{userId}")
Integer getBalance(@Param("userId") String userId);
@Update("UPDATE account SET money = money - #{price},update_time = #{updateTime} WHERE user_id = #{userId} AND money >= ${price}")
int reduceBalance(@Param("userId") String userId, @Param("price") Integer price,
@Param("updateTime") Timestamp updateTime);
...
}
Mybatis Plus
内置通用 Mapper、通用 Service,不需要 xml ,通过少量配置即可实现单表大部分 CRUD 操作,有强大的条件构造器
内置 Sql 注入剥离器,有效预防Sql注入攻击
简单的增删改查接口可继承通用Mapper ,复杂的增删改查可在接口方法上使用 SQL注解
MyBatis-Plus 中,QueryWrapper 和 LambdaQueryWrapper 都是用于构建查询条件的工具类
QueryWrapper
写法:使用字符串形式构建查询条件,支持链式调用,可以拼接多个查询条件
优点:更灵活,支持复杂查询操作和SQL片段拼接
缺点:类型不安全、可读性较差,容易因拼写错误导致异常,当字段名称发生改变时,需要进行额外的检查和修改
LambdaQueryWrapper
写法:使用Lambda表达式引用实体类的属性,避免硬编码字段名。提高代码的可读性和可维护性。
优点:类型安全、易读性高,可直接使用实体类的属性和方法。
缺点:某些复杂查询可能不支持。
QueryWrapper适用于复杂查询,LambdaQueryWrapper 更适合于简单的查询条件构建
单表增删改查
继承mapper接口,javaBean类中注解表名和主键
public interface CourseMapper extends Mapper< Course> {
}
//对应数据库表名
@Table(name = "course")
public class Course {
//课程类
//标识主键
@Id
private int cid ;
private String cname ;
private int tid ;
//一个课程对应一个老师
private Teacher teacher ;
//一个课程对于一个成绩
private Score score ;
//无参方法
//有参方法
//get/set方法
}
@TableId(type = IdType.AUTO) // 标识主键Id,设置为自动增长
private Integer cid;
https://baomidou.com/
上一篇
下一篇
hutool-db hsqldb2 例子
hutool-db 使用
grafana alert Group wait Group interval Repeat interval
dolphinscheduler 3.2.1
grafana nodata 不告警设置
中小学学习资源