MybatisPlus简介
所属分类 mybatis-plus
浏览量 648
MyBatis-Plus
单表CRUD
MP适用于单表操作 ,多表关联,手写Sql效率更高 !!!
无侵入 只做增强不做改变
强大CRUD操作 内置通用的 mapper service ,强大的条件构造器
通用 lambda 表达式 ,方便实现各类查询
主键自动生成 4种主键策略 分布式ID生成器
ActiveRecord 模式 ,实体类 继承 Model即可
内置代码生成器 mapper model service controller
内置分页插件
内置性能分析插件
内置拦截插件
工作原理
1) 通过注解 实现 对象 与 表 一一映射
2) 通过属性注解 实现 对象的属性 与 表字段 一一映射
3) 公共方法抽取到BaseMapper接口
4) 将用户操作的方法对象,转化为Sql
userMapper.insert(user)
insert into 表名(字段名…) value (属性值…)
SQL 生成过程
1) 通过userMapper 查找父级接口BaseMapper
2) 根据BaseMapper 查找泛型对象 User对象
3) 根据user对象 @TableName 注解 ,获取表名
4) 根据user对象的属性注解 @TableField, 获取表字段
5) 生成Sql 交给Mybatis 执行
@TableName("t_user")
public class User {
@TableId("user_id")
private Long id;
@TableField("user_name")
private String name;
private Integer age;
排除实体类中非表字段
@TableField(exist = false)
public interface UserMapper extends BaseMapper< User >
UserMapper userMapper = session.getMapper(UserMapper.class);
User user = new User();
user.setId(1);
user.setName("dyyx");
userMapper.insert(user);
user = userMapper.selectById(1);
System.out.println("user="+user);
user.setName("dyyx002");
userMapper.updateById(user);
user = userMapper.selectById(1);
System.out.println("user="+user);
user = new User();
user.setId(2);
user.setName("fish");
userMapper.insert(user);
List< User > users = userMapper.selectList(null);
for(User item:users){
System.out.println(item);
}
User query = new User();
query.setId(1);
QueryWrapper< User > queryWrapper = new QueryWrapper<>(query);
user = userMapper.selectOne(queryWrapper);
System.out.println("user="+user);
users = userMapper.selectList(queryWrapper);
for(User item:users){
System.out.println(item);
}
QueryWrapper
queryWrapper.like %xxx%
queryWrapper.likeLeft %xxx
queryWrapper.likeRight xxx%
queryWrapper.gt("age", 18).or().eq("name","xxx");
Integer[] ids = {1,2,3};
queryWrapper.in("id", ids);
queryWrapper.isNull("name");
queryWrapper.gt(age>0, "age", age).eq(flag,"sex",sex);
指定查询返回字段
queryWrapper.select("name","age");
debug 输出sql日志
控制台输出
LogFactory.useStdOutLogging();
Logging initialized using 'class org.apache.ibatis.logging.stdout.StdOutImpl' adapter.
或者增加依赖
org.slf4j:slf4j-log4j12:1.7.25
配置 log4j.properties
log4j.rootLogger=DEBUG,CONSOLE
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target = System.out
log4j.appender.CONSOLE.Threshold = DEBUG
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[frame] %d{yyyy-MM-dd HH:mm:ss,SSS} - %-4r %-5p [%t] %C:%L %x - %m%n
log4j.appender.CONSOLE.Encoding=UTF-8
log4j.logger.org.mybatis=DEBUG
log4j.logger.java.sql=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG
log4j.logger.java.Encoding=UTF-8
例子项目代码
https://gitee.com/dyyx/hellocode/blob/master/demo/mp/mp-nospring-demo/src/main/java/com/dyyx/nospring/NoSpring.java
java 数据库访问 持久层 框架
上一篇
下一篇
protoc 和 protobuf-java 版本不一致问题
maven插件编译proto文件
spring data JPA
MybatisPlus QueryWrapper LambdaQueryWrapper LambdaQueryChainWrapper
mybatis plus 常用注解
mybatis 日志实现要点