mybatis-plus官网:https://mp.baomidou.com/
一 、mybatis-plus快速部署
1、初步配置,基于springboot,创建springboot工程,导入依赖
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!-- mybatis-plus 依赖-->
<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
<scope>provided</scope>
</dependency>
2、创建数据库mybatis_plus,创建表以及添加数据
DROP TABLE IF EXISTS user;
CREATE TABLE user
(
id BIGINT(20) NOT NULL COMMENT '主键ID',
name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
age INT(11) NULL DEFAULT NULL COMMENT '年龄',
email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (id)
);
DELETE FROM user;
INSERT INTO user (id, name, age, email) VALUES
(1, 'Jone', 18, 'test1@baomidou.com'),
(2, 'Jack', 20, 'test2@baomidou.com'),
(3, 'Tom', 28, 'test3@baomidou.com'),
(4, 'Sandy', 21, 'test4@baomidou.com'),
(5, 'Billie', 24, 'test5@baomidou.com');
3、springboot的yml配置文件配置
# DataSource Config
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/mybatis_plus?useSSL=false
username: root
password: password
4、实体类和mapper接口
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
//继承mybatis-plus的BaseMapper,继承后拥有父类的方法,可以实现简单的增删改查操作
@Mapper //标识是一个mapper类
@Repository //持久层注解
//两个注解都可以使用
public interface UserMapper extends BaseMapper<User> {
}
5、在springboot启动类中加入扫描包的注解和路径,否则不生效
@SpringBootApplication
//扫描mapper文件夹
@MapperScan("com.ma.mapper")
public class MybatisPlusV1Application {
public static void main(String[] args) {
SpringApplication.run(MybatisPlusV1Application.class, args);
}
}
6、简单的测试
@SpringBootTest
class MybatisPlusV1ApplicationTests {
@Autowired
private UserMapper userMapper;
@Test
void contextLoads() {
//queryWrapper 条件构造器 如果没有条件就为null
List<User> userList = userMapper.selectList(null); //查询所有用户
//语法糖格式
userList.forEach(System.out::println);
}
@Test
void getUserByID(){
User user = userMapper.selectById(1); //根据id查询
System.out.println(user);
}
}
二、日志功能
在yml配置文件中加入日志输出
# 日志
mybatis-plus:
configuration:
# 控制台输出日志
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
三、crud操作
mybatis-plus实体类上的注解
@TableId(type = IdType.AUTO) //id自我增
@TableField 字段 fill字段填充
@TableField(fill = FieldFill.INSERT) //插入的时候填充
@TableField(fill = FieldFill.INSERT_UPDATE) //更新的时候填充
@TableField填充规则
1、插入操作
插入数据,数据库中如果没有自增id,在插入数据时也没有实现给id字段赋值,那么就会生成唯一id
@Test
void insertUser(){
//创建空对象
User user = new User();
//赋值
user.setName("李四");
user.setAge(10);
user.setEmail("115151654@qq.com");
//插入数据
int insert = userMapper.insert(user);
//查看
System.out.println(insert);
System.out.println(user);
}
2、更新操作
@Test
void updateUser(){
//创建空对象
User user = new User();
//赋值
user.setName("李四11111");
user.setAge(10);
user.setEmail("115151654@qq.com");
user.setId((long) 5);
//更新,注意,这里的更新方法传入的是对象,而不是一个对象的id
int i = userMapper.updateById(user);
System.out.println(i);
}
四、条件构造器
isNotNull 不为空
ge 大于等于
between 区间[],包含这个区间的首位和末位
allEq 需要的参数为map
gt 大于
lt 小于
五、代码生成器
1、添加依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.4.1</version>
</dependency>
2、添加模板引擎
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>latest-freemarker-version</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.swagger/swagger-annotations -->
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.6.2</version>
</dependency>
3、代码生成器
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.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.AutoGenerator;
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 AutoCode {
public static void main(String[] args) {
//构建一个代码生成器
AutoGenerator mpg = new AutoGenerator();
//配置策略
//1、全局配置
GlobalConfig gc = new GlobalConfig();
String proPath = System.getProperty("user.dir"); //用户目录
gc.setOutputDir(proPath+"/src/main/java"); //生成后所在目录
gc.setAuthor("ma"); //设置作者
gc.setOpen(false); //是否打开资源管理器
gc.setFileOverride(false);//是否覆盖之前生成的
gc.setServiceName("%sService");//去掉service的I前缀
gc.setIdType(IdType.ASSIGN_ID); //初始的默认算法
gc.setDateType(DateType.ONLY_DATE);//日期类型
gc.setSwagger2(true);//是否配置swagger文档
mpg.setGlobalConfig(gc);//将全局配置添加到代码生成器中
//2、设置数据源
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/mybatis_plus?useSSL=false&useUnicode=true&characterEncoding=UTF-8");
dsc.setDriverName("com.mysql.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("123456");
dsc.setDbType(DbType.MYSQL);//数据库类型
mpg.setDataSource(dsc);
//3、包的配置
PackageConfig pc = new PackageConfig();
pc.setModuleName("blog");//模块名
pc.setParent("com.ma");//生成路径
pc.setEntity("domain");//实体类名
pc.setMapper("mapper");//接口名
pc.setService("service");//服务层名
pc.setController("controller");//控制层
mpg.setPackageInfo(pc);
//4、策略配置
StrategyConfig strategy = new StrategyConfig();
strategy.setInclude("myuser"); //表名映射
strategy.setNaming(NamingStrategy.underline_to_camel);
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
strategy.setEntityLombokModel(true); //使用lombok开启注解
strategy.setLogicDeleteFieldName("deleted");//逻辑删除字段
//自动填充策略
TableFill createTime = new TableFill("create_time", FieldFill.INSERT);
TableFill updateTime = new TableFill("update_time", FieldFill.INSERT_UPDATE);
//将策略加到list,传到策略配置中
ArrayList<TableFill> tableFills = new ArrayList<>();
tableFills.add(createTime);
tableFills.add(updateTime);
strategy.setTableFillList(tableFills); //需要list
strategy.setVersionFieldName("version");//乐观锁
strategy.setRestControllerStyle(true);//驼峰命名
strategy.setControllerMappingHyphenStyle(true);//访问路径下划线
mpg.setStrategy(strategy);
mpg.execute();//执行
}
}
原创文章,作者:Carrie001128,如若转载,请注明出处:https://blog.ytso.com/274481.html