一、springBoot 整合 mybatis-plus
< ! -- 数据库驱动-- >
< dependency>
< groupId> mysql< / groupId>
< artifactId> mysql- connector- java< / artifactId>
< / dependency>
< ! -- mybatis- plus-- >
< dependency>
< groupId> com. baomidou< / groupId>
< artifactId> mybatis- plus- boot- starter< / artifactId>
< version> 3.2 .0 < / version>
< / dependency>
< ! -- 代码生成-- >
< dependency>
< groupId> com. baomidou< / groupId>
< artifactId> mybatis- plus- generator< / artifactId>
< version> 3.2 .0 < / version>
< / dependency>
< dependency>
< groupId> org. springframework. boot< / groupId>
< artifactId> spring- boot- starter- freemarker< / artifactId>
< / dependency>
二、增删改查
1. 插入
void insert ( ) {
User user = new User ( ) ;
user. setUsername ( "wangwu" ) ;
user. setPassword ( "255223" ) ;
user. setStatus ( 0 ) ;
int result = userMapper. insert ( user) ;
System . out. println ( result) ;
}
2. 查询
@Test
void selectById ( ) {
User user = new User ( ) ;
user. setId ( 1L ) ;
user = userMapper. selectById ( user. getId ( ) ) ;
System . out. println ( user) ;
}
@Test
void selectByMap ( ) {
HashMap < String , Object > map = new HashMap < > ( ) ;
map. put ( "userName" , "lisi" ) ;
map. put ( "passWord" , "789456" ) ;
List < User > users = userMapper. selectByMap ( map) ;
System . out. println ( "=======================================" ) ;
users. forEach ( System . out:: println ) ;
}
@Test
void selectBatchIds ( ) {
List < User > users = userMapper. selectBatchIds ( Arrays . asList ( 1 , 2 , 3 ) ) ;
System . out. println ( users) ;
}
4. 分页查询
@Bean
public PaginationInterceptor paginationInterceptor ( ) {
return new PaginationInterceptor ( ) ;
}
@Test
void page ( ) {
Page < User > page = new Page < > ( 0 , 2 ) ;
userMapper. selectPage ( page, null ) ;
page. getRecords ( ) . forEach ( System . out:: println ) ;
System . out. println ( page. getTotal ( ) ) ;
}
4. 更新
@Test
void update ( ) {
User user = new User ( ) ;
user. setId ( 4L ) ;
user. setUsername ( "lisi" ) ;
user. setPassword ( "88978974" ) ;
user. setStatus ( 1 ) ;
int result = userMapper. updateById ( user) ;
System . out. println ( result) ;
}
5. 删除
配置逻辑删除 1. 数据库添加 deleted 字段,默认值为 0; 2. 实体类添加属性 @TableLogic
private Integer deleted;
3. 配置逻辑删除组件(高版本不需要 )
@Bean
public ISqlInjector sqlInjector ( ) {
return new LogicSqlInjector ( ) ;
}
4. 配置 springBoot mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0
删除测试
@Test
void deleteById ( ) {
userMapper. deleteById ( 1L ) ;
}
@Test
void deleteByBatchs ( ) {
userMapper. deleteBatchIds ( Arrays . asList ( 3 , 4 ) ) ;
}
@Test
void deleteByMap ( ) {
HashMap < String , Object > map = new HashMap < > ( ) ;
map. put ( "userName" , "zhangsan" ) ;
userMapper. deleteByMap ( map) ;
}
三、条件构造器
@Test
void test ( ) {
QueryWrapper < User > wrapper = new QueryWrapper < > ( ) ;
wrapper. isNotNull ( "userName" ) . isNotNull ( "email" ) . ge ( "id" , 0 ) ;
userMapper. selectList ( wrapper) . forEach ( System . out:: println ) ;
}
@Test
void test1 ( ) {
QueryWrapper < User > wrapper = new QueryWrapper < User > ( ) ;
wrapper. eq ( "userName" , "zhangsan" ) ;
List < User > users = userMapper. selectList ( wrapper) ;
System . out. println ( users) ;
}
@Test
void test2 ( ) {
QueryWrapper < User > wrapper = new QueryWrapper < User > ( ) ;
wrapper. between ( "id" , 1 , 3 ) ;
int count = userMapper. selectCount ( wrapper) ;
System . out. println ( count) ;
}
@Test
void test3 ( ) {
QueryWrapper < User > wrapper = new QueryWrapper < User > ( ) ;
wrapper. notLike ( "userName" , "z" ) . likeLeft ( "userName" , "i" ) ;
List < Map < String , Object > > map = userMapper. selectMaps ( wrapper) ;
map. forEach ( System . out:: println ) ;
}
@Test
void test4 ( ) {
QueryWrapper < User > wrapper = new QueryWrapper < User > ( ) ;
wrapper. inSql ( "id" , "select id from m_user where id = 4" ) ;
List < Object > objects = userMapper. selectObjs ( wrapper) ;
objects. forEach ( System . out:: println ) ;
}
@Test
void test5 ( ) {
QueryWrapper < User > wrapper = new QueryWrapper < User > ( ) ;
wrapper. orderByAsc ( "id" ) ;
List < User > users = userMapper. selectList ( wrapper) ;
users. forEach ( System . out:: println ) ;
}
四、代码自动生成器
1. 狂神版
package com. kuang ;
import com. baomidou. mybatisplus. annotation. DbType ;
import com. baomidou. mybatisplus. annotation. FieldFill ;
import com. baomidou. mybatisplus. annotation. IdType ;
import com. baomidou. mybatisplus. annotation. TableField ;
import com. baomidou. mybatisplus. generator. AutoGenerator ;
import com. baomidou. mybatisplus. generator. config. DataSourceConfig ;
import com. baomidou. mybatisplus. generator. config. GlobalConfig ;
import com. baomidou. mybatisplus. generator. config. PackageConfig ;
import com. baomidou. mybatisplus. generator. config. StrategyConfig ;
import com. baomidou. mybatisplus. generator. config. po. TableFill ;
import com. baomidou. mybatisplus. generator. config. rules. DateType ;
import com. baomidou. mybatisplus. generator. config. rules. NamingStrategy ;
import java. util. ArrayList ;
public class KuangCode {
public static void main ( String [ ] args) {
AutoGenerator mpg = new AutoGenerator ( ) ;
GlobalConfig gc = new GlobalConfig ( ) ;
String projectPath = System . getProperty ( "user.dir" ) ;
gc. setOutputDir ( projectPath+ "/src/main/java" ) ;
gc. setAuthor ( "狂神说" ) ;
gc. setOpen ( false ) ;
gc. setFileOverride ( false ) ;
gc. setServiceName ( "%sService" ) ;
gc. setIdType ( IdType . ID_WORKER ) ;
gc. setDateType ( DateType . ONLY_DATE ) ;
gc. setSwagger2 ( true ) ;
mpg. setGlobalConfig ( gc) ;
DataSourceConfig dsc = new DataSourceConfig ( ) ;
dsc. setUrl ( "jdbc:mysql://localhost:3306/kuang_community?" +
"useSSL=false&useUnicode=true&characterEncoding=utf-8&" +
"serverTimezone=GMT%2B8" ) ;
dsc. setDriverName ( "com.mysql.cj.jdbc.Driver" ) ;
dsc. setUsername ( "root" ) ;
dsc. setPassword ( "123456" ) ;
dsc. setDbType ( DbType . MYSQL ) ;
mpg. setDataSource ( dsc) ;
PackageConfig pc = new PackageConfig ( ) ;
pc. setModuleName ( "blog" ) ;
pc. setParent ( "com.kuang" ) ;
pc. setEntity ( "entity" ) ;
pc. setMapper ( "mapper" ) ;
pc. setService ( "service" ) ;
pc. setController ( "controller" ) ;
mpg. setPackageInfo ( pc) ;
StrategyConfig strategy = new StrategyConfig ( ) ;
strategy. setInclude ( "blog_tags" , "course" , "links" , "sys_settings" , "user_record" , "user_say" ) ;
strategy. setNaming ( NamingStrategy . underline_to_camel) ;
strategy. setColumnNaming ( NamingStrategy . underline_to_camel) ;
strategy. setEntityLombokModel ( true ) ;
strategy. setLogicDeleteFieldName ( "deleted" ) ;
TableFill gmtCreate = new TableFill ( "gmt_create" , FieldFill . INSERT ) ;
TableFill gmtModified = new TableFill ( "gmt_modified" ,
FieldFill . INSERT_UPDATE ) ;
ArrayList < TableFill > tableFills = new ArrayList < > ( ) ;
tableFills. add ( gmtCreate) ;
tableFills. add ( gmtModified) ;
strategy. setTableFillList ( tableFills) ;
strategy. setVersionFieldName ( "version" ) ;
strategy. setRestControllerStyle ( true ) ;
strategy. setControllerMappingHyphenStyle ( true ) ;
mpg. setStrategy ( strategy) ;
mpg. execute ( ) ;
}
}
2. 自用版
package com. wang ;
import com. baomidou. mybatisplus. core. exceptions. MybatisPlusException ;
import com. baomidou. mybatisplus. core. toolkit. StringPool ;
import com. baomidou. mybatisplus. core. toolkit. StringUtils ;
import com. baomidou. mybatisplus. generator. AutoGenerator ;
import com. baomidou. mybatisplus. generator. InjectionConfig ;
import com. baomidou. mybatisplus. generator. config. * ;
import com. baomidou. mybatisplus. generator. config. po. TableInfo ;
import com. baomidou. mybatisplus. generator. config. rules. NamingStrategy ;
import com. baomidou. mybatisplus. generator. engine. FreemarkerTemplateEngine ;
import java. util. ArrayList ;
import java. util. List ;
import java. util. Scanner ;
public class CodeGenerator {
public static String scanner ( String tip) {
Scanner scanner = new Scanner ( System . in) ;
StringBuilder help = new StringBuilder ( ) ;
help. append ( "请输入" + tip + ":" ) ;
System . out. println ( help. toString ( ) ) ;
if ( scanner. hasNext ( ) ) {
String ipt = scanner. next ( ) ;
if ( StringUtils . isNotEmpty ( ipt) ) {
return ipt;
}
}
throw new MybatisPlusException ( "请输入正确的" + tip + "!" ) ;
}
public static void main ( String [ ] args) {
AutoGenerator mpg = new AutoGenerator ( ) ;
GlobalConfig gc = new GlobalConfig ( ) ;
final String projectPath = System . getProperty ( "user.dir" ) ;
gc. setOutputDir ( projectPath + "/src/main/java" ) ;
gc. setAuthor ( "关注公众号:MarkerHub" ) ;
gc. setOpen ( false ) ;
gc. setServiceName ( "%sService" ) ;
mpg. setGlobalConfig ( gc) ;
DataSourceConfig dsc = new DataSourceConfig ( ) ;
dsc. setUrl (
"jdbc:mysql://124.223.205.209:3306/vueblog?" +
"useUnicode=true&useSSL=false&characterEncoding=utf8" +
"&serverTimezone=UTC" ) ;
dsc. setDriverName ( "com.mysql.cj.jdbc.Driver" ) ;
dsc. setUsername ( "3062827964" ) ;
dsc. setPassword ( "Q3062827964q" ) ;
mpg. setDataSource ( dsc) ;
PackageConfig pc = new PackageConfig ( ) ;
pc. setModuleName ( null ) ;
pc. setParent ( "com.wang" ) ;
mpg. setPackageInfo ( pc) ;
InjectionConfig cfg = new InjectionConfig ( ) {
@Override
public void initMap ( ) {
}
} ;
String templatePath = "/templates/mapper.xml.ftl" ;
List < FileOutConfig > focList = new ArrayList < > ( ) ;
focList. add ( new FileOutConfig ( templatePath) {
@Override
public String outputFile ( TableInfo tableInfo) {
return projectPath + "/src/main/resources/mapper/"
+ "/" + tableInfo. getEntityName ( ) + "Mapper" + StringPool . DOT_XML ;
}
} ) ;
cfg. setFileOutConfigList ( focList) ;
mpg. setCfg ( cfg) ;
TemplateConfig templateConfig = new TemplateConfig ( ) ;
templateConfig. setXml ( null ) ;
mpg. setTemplate ( templateConfig) ;
StrategyConfig strategy = new StrategyConfig ( ) ;
strategy. setNaming ( NamingStrategy . underline_to_camel) ;
strategy. setColumnNaming ( NamingStrategy . underline_to_camel) ;
strategy. setEntityLombokModel ( true ) ;
strategy. setRestControllerStyle ( true ) ;
strategy. setInclude ( scanner ( "表名,多个英文逗号分割" ) . split ( "," ) ) ;
strategy. setControllerMappingHyphenStyle ( true ) ;
strategy. setTablePrefix ( "m_" ) ;
mpg. setStrategy ( strategy) ;
mpg. setTemplateEngine ( new FreemarkerTemplateEngine ( ) ) ;
mpg. execute ( ) ;
}
}