首页  

MybatisPlus简介     所属分类 mybatis-plus 浏览量 238
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 日志实现要点