一、简介
Mybatisplus是一个基于mybatis的增强工具,可快速、安全的开发mybatis相关项目。它提供了许多实用的功能,如分页、条件构造器、性能分析、代码生成等。
Mybatisplus官网提供了完整的文档、代码示例、疑难解答等一系列资源,方便开发者学习和使用。
二、使用步骤
1. 引入依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>latest version</version>
</dependency>
2. 配置mybatisplus
mybatis-plus:
configuration:
map-underscore-to-camel-case: true # 开启驼峰命名
use-generated-keys: true # 开启自动生成功能
3. 创建实体类
@Data
public class User{
private Long id;
private String username;
private Integer age;
}
4. 创建Mapper接口
public interface UserMapper extends BaseMapper<User>{
}
5. 基础CRUD
// 插入操作
User user = new User();
user.setUsername("Mybatis");
user.setAge(18);
userMapper.insert(user);
// 查询单个实体
User result = userMapper.selectById(1L);
// 更新操作
User user = userMapper.selectById(1L);
user.setUsername("Mybatisplus");
userMapper.updateById(user);
// 删除操作
userMapper.deleteById(1L);
三、分页查询
1. 分页配置
Page<User> page = new Page<>(1, 10);
2. 分页查询
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.lambda().lt(User::getAge, 18);
Page<User> page = new Page<>(1, 10);
IPage<User> iPage = userMapper.selectPage(page, wrapper);
List<User> userList = iPage.getRecords();
四、条件构造器
1. 创建条件构造器
QueryWrapper<User> wrapper = new QueryWrapper<>();
2. 添加条件
wrapper.lambda().eq(User::getUsername, "Mybatisplus");
3. 执行查询
List<User> userList = userMapper.selectList(wrapper);
五、代码生成器
1. 配置代码生成器
AutoGenerator generator = new AutoGenerator();
generator.setDataSource(dataSourceConfig);
generator.setGlobalConfig(globalConfig);
generator.setPackageInfo(packageConfig);
generator.setTemplate(templateConfig);
generator.setStrategy(strategyConfig);
2. 执行生成
generator.execute();
六、性能分析插件
1. 配置perfix和log类型
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 指定logging日志实现
sql-log-format: lower_case # 显示sql格式
sql-injector: org.apache.ibatis.builder.MapperBuilderAssistant $NoInject
cache-enabled: false
local-cache-scope: SESSION
mapper-locations: classpath:/mapper/*.xml
type-aliases-package: com.baomidou.mybatisplus.sample.model
global-config: #全局配置
db-config:
id-type: AUTO # 全局主键策略
field-strategy: not_empty
db-type: mysql
logic-delete-value: 1
logic-not-delete-value: 0
column-like: true # CRU中参数对象FilecdLike查询条件,默认false:为按等于匹配
refresh-mapper: true # mapper.xml热加载
sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector # 默认值
super-mapper-class: com.baomidou.mybatisplus.mapper.BaseMapper # 默认值
cache-enabled: false # 全局缓存配置,,默认值true
execution-analysis:
enable: true
close-out-param: false # 全局调试开关
2. 开启and、in、or输出
wrapper.lambda().and(i -> i.lt(User::getAge, 18).or().isNotNull(User::getEmail));
七、动态表名
1. 配置SqlParser
List<ISqlParser> sqlParserList = new ArrayList<>();
sqlParserList.add(new TableNameParser());
// 动态表名配置
DynamicTableNameParser dynamicTableNameParser = new DynamicTableNameParser();
dynamicTableNameParser.setTableNameHandlerMap(handlerMap);
sqlParserList.add(dynamicTableNameParser);
2. 注入SqlParser
SqlParserHandler sqlParserHandler = new SqlParserHandler();
sqlParserHandler.setSqlParserList(sqlParserList);
PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();
performanceInterceptor.setSqlParserList(sqlParserList);
八、定制化
Mybatisplus官网提供了许多定制化的方法,如关键字处理、属性过滤器、自定义全局操作等。请查看官网文档,以充分利用Mybatisplus所提供的强大功能。