mybatis-plus的基本使用

mybatis-plus官网:https://mp.baomidou.com/

一 、mybatis-plus快速部署

1、初步配置,基于springboot,创建springboot工程,导入依赖

copy
<!-- 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,创建表以及添加数据

copy
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配置文件配置

copy
# 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接口

copy
@Data @AllArgsConstructor @NoArgsConstructor public class User { private Long id; private String name; private Integer age; private String email; }
copy
//继承mybatis-plus的BaseMapper,继承后拥有父类的方法,可以实现简单的增删改查操作 @Mapper //标识是一个mapper类 @Repository //持久层注解 //两个注解都可以使用 public interface UserMapper extends BaseMapper<User> { }

5、在springboot启动类中加入扫描包的注解和路径,否则不生效

copy
@SpringBootApplication //扫描mapper文件夹 @MapperScan("com.ma.mapper") public class MybatisPlusV1Application { public static void main(String[] args) { SpringApplication.run(MybatisPlusV1Application.class, args); } }

6、简单的测试

copy
@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配置文件中加入日志输出

copy
# 日志 mybatis-plus: configuration: # 控制台输出日志 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

三、crud操作

mybatis-plus实体类上的注解

copy
@TableId(type = IdType.AUTO) //id自我增 @TableField 字段 fill字段填充 @TableField(fill = FieldFill.INSERT) //插入的时候填充 @TableField(fill = FieldFill.INSERT_UPDATE) //更新的时候填充

@TableField填充规则

1、插入操作

插入数据,数据库中如果没有自增id,在插入数据时也没有实现给id字段赋值,那么就会生成唯一id

copy
@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、更新操作

copy
@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); }

四、条件构造器

copy
isNotNull 不为空 ge 大于等于 between 区间[],包含这个区间的首位和末位 allEq 需要的参数为map gt 大于 lt 小于

五、代码生成器

1、添加依赖

copy
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.4.1</version> </dependency>

2、添加模板引擎

copy
<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、代码生成器

copy
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();//执行 } }
posted @   花椒蛋炒饭  阅读(293)  评论(0编辑  收藏  举报
相关博文:
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起