您的位置:

Mybatisplus官网详解

一、简介

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所提供的强大功能。