一、簡介
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所提供的強大功能。
原創文章,作者:JADOK,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/372272.html