生产力工具之MyBatis-Plus使用案例

MyBatis-Plus的简单使用

MyBatis-Plus的简单使用

  1. sql

    DROP TABLE IF EXISTS user;
    
    CREATE TABLE user
    (
      id BIGINT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
      name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
      age INT(11) NULL DEFAULT NULL COMMENT '年龄',
      email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
      is_del TINYINT(1) DEFAULT 0 COMMENT '逻辑删除标识'
    );
    
    
    DELETE FROM user;
    
    INSERT INTO user (name, age, email) VALUES
    ('Jone', 18, 'test1@baomidou.com'),
    ('Jack', 20, 'test2@baomidou.com'),
    ('Tom', 28, 'test3@baomidou.com'),
    ('Sandy', 21, 'test4@baomidou.com'),
    ('Billie', 24, 'test5@baomidou.com');
    
  2. pom

    <properties>
       <java.version>17</java.version>
       <mybatisplus.version>3.5.3.2</mybatisplus.version>
    </properties>
    
    <dependencies>
       <!-- mybatis-plus-boot-starter -->
       <dependency>
           <groupId>com.baomidou</groupId>
           <artifactId>mybatis-plus-boot-starter</artifactId>
           <version>${mybatisplus.version}</version>
       </dependency>
    
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-web</artifactId>
       </dependency>
    
       <dependency>
           <groupId>com.mysql</groupId>
           <artifactId>mysql-connector-j</artifactId>
           <scope>runtime</scope>
       </dependency>
       <dependency>
           <groupId>org.projectlombok</groupId>
           <artifactId>lombok</artifactId>
           <optional>true</optional>
       </dependency>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-test</artifactId>
           <scope>test</scope>
       </dependency>
    </dependencies>
    
  3. application.properties

    # DataSource Config
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    spring.datasource.url=jdbc:mysql://192.168.2.128:3306/mybatis_plus_demo?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
    spring.datasource.username=root
    spring.datasource.password=123456
    
  4. 启动类

@SpringBootApplication
@MapperScan("com.brian.demo.mapper")
public class MybatisplusDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(MybatisplusDemoApplication.class, args);
    }

}
  1. entity

    @Data
    @TableName(value = "user")
    public class User {
    
        /**
         * 主键
         */
        @TableId(value = "id", type = IdType.AUTO)
        private Long id;
    
        /**
         * 姓名
         */
        @TableField
        private String name;
    
        private Integer age;
    
        private String email;
    
        private Integer isDel;
    
    }
    
  2. mapper

    public interface UserMapper extends BaseMapper<User> {
    
    }
    
  3. service

    public interface IUserService extends IService<User> {
    }
    
    @Service
    public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {
    }
    
  4. controller

    @RestController
    @RequestMapping("user")
    public class UserController {
    
        @Autowired
        private IUserService userService;
    
        /**
         * description: 新增
         *
         * http://localhost:8080/user/save
         *
         * @return: boolean
         * @author: wangxiyao
         */
        @RequestMapping("save")
        public boolean save() {
            User user = new User();
            user.setName("大漂亮");
    
            return userService.save(user);
        }
    
        /**
         * description: 修改
         *
         * http://localhost:8080/user/update?name=brian&id=6
         *
         * @param name
         * @param id
         * @return: boolean
         * @author: wangxiyao
         */
        @RequestMapping("update")
        public boolean update(@RequestParam String name, @RequestParam Long id) {
            User User = new User();
            User.setName(name);
            User.setId(id);
            return userService.updateById(User);
        }
    
        /**
         * description: 删除
         *
         * http://localhost:8080/user/delete?id=6
         *
         * @param id
         * @return: boolean
         * @author: wangxiyao
         */
        @RequestMapping("delete")
        public boolean delete(@RequestParam Long id) {
            User User = new User();
            User.setId(id);
            return userService.removeById(User);
        }
    
        /**
         * description: 列表
         *
         * http://localhost:8080/user/list
         * 
         * @return: java.util.List<com.brian.demo.entities.User>
         * @author: wangxiyao
         */
        @RequestMapping("list")
        public List<User> list() {
            return userService.list();
        }
    
        /**
         * description: 分页列表
         * 
         * http://localhost:8080/user/page?current=1&size=3
         * 
         * @param current
         * @param size
         * @return: com.baomidou.mybatisplus.extension.plugins.pagination.Page
         * @author: wangxiyao
         */
        @RequestMapping("page")
        public Page page(@RequestParam int current, @RequestParam int size) {
            return userService.page(new Page<>(current, size), new QueryWrapper(new User()));
        }
    
    }
    

逻辑删除配置

方式一:增加全局配置

# 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)
mybatis-plus.global-config.db-config.logic-delete-field=is_del
# 逻辑已删除值(默认为 1)
mybatis-plus.global-config.db-config.logic-delete-value=1
# 逻辑未删除值(默认为 0)
mybatis-plus.global-config.db-config.logic-not-delete-value=0

方式二:在对应字段上增加@TableLogic

//@TableLogic
private Integer isDel;

增加以上配置后,执行 http://localhost:8080/user/delete?id=6 方法,效果从 DELETE 变成 UPDEATE

MyBatis-Plus代码生成器

  1. 引入pom
		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus-generator</artifactId>
			<version>3.5.2</version>
		</dependency>
		<!-- MyBatisPlus依赖,要使用MyBatisPlus就必须导入MyBatisPlus的依赖,因为MyBatisPlus中默认有MyBatis的依赖,所以无需再导入MyBatis的依赖了 -->
		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus</artifactId>
			<version>3.4.3.4</version>
		</dependency>
		<!-- MyBatis代码生成器的模板引擎,这个也许需要导入的,官方的文档是这样写的,velocity引擎是默认的,不需要配置其他东西,比较方便,其他模板引擎也可以使用,还可以自定义模板引擎,具体请看官网 -->
		<!--		<dependency>-->
		<!--			<groupId>org.apache.velocity</groupId>-->
		<!--			<artifactId>velocity-engine-core</artifactId>-->
		<!--			<version>2.3</version>-->
		<!--		</dependency>-->
		<dependency>
			<groupId>org.freemarker</groupId>
			<artifactId>freemarker</artifactId>
			<version>2.3.32</version>
		</dependency>
  1. 编写生成器代码
// 配置模板
        FastAutoGenerator.create("url", "username", "password")
                // 全局配置,生成的代码路径
                .globalConfig(builder ->
                        builder.author("brian7788") // 设置作者
                                //.enableSwagger() // 开启 swagger 模式
                                .outputDir("D:\\mybatis-plus-generator-demo\\src\\main\\java\\") // 指定输出目录 最好是绝对路径
                )
                // 使用Freemarker引擎模板,默认的是Velocity引擎模板
                .templateEngine(new FreemarkerTemplateEngine())
                // 包配置
                .packageConfig(builder -> builder.parent("test.mybatis.plus.AutoCreate")//配置包路径
                        .entity("entity") // 设置实体包名,默认entity
                        .service("service") // 设置服务包名,默认service
                        .serviceImpl("service.Impl") // 设置服务实现类包名,默认service.impl
                        .controller("controller") // 设置控制器包名,默认controller
                        .mapper("mapper") // 设置mapper包名,默认mapper
                        .xml("mapper") // 设置xml包名,默认mapper.xml
                        .other("others") // 设置自定义文件包名,默认other
                        .pathInfo(Collections.singletonMap(OutputFile.xml, "D:\\SpringCloudLearning\\SpringBootStudy\\src\\main\\resources\\test\\")) // 设置mapper.xml生成路径
                )
                // 策略配置
                .strategyConfig(builder ->
                        // 设置需要生成的表名
                        builder.addInclude("tb_user", "tb_role", "tb_user_role")
                )
                // 自定义文件输出配置
                .injectionConfig(builder ->  new InjectionConfig.Builder()
                        // 自定义配置会被优先输出
                        // 加载模板文件并指定输出文件
                        // 模板文件名称最好和自定义文件名称一致,方便管理,同时建议统一使用controller等命令,防止出现错误。
                        .customFile(Collections.singletonMap("controller.java","template/controller.java"))
                        .customFile(Collections.singletonMap("entity.java", "template/entity.java"))
                        .customFile(Collections.singletonMap("mapper.java", "template/mapper.java"))
                        .customFile(Collections.singletonMap("service.java", "template/service.java"))
                        .customFile(Collections.singletonMap("serviceImpl.java.ftl", "template/serviceImpl.java"))
                        .build()
                )
                /*
                  .injectionConfig:Mybatisplus-generator 的一个配置项,用于指定要使用的自定义配置。
                   builder ->  new InjectionConfig.Builder():Lambda 表达式,用于创建并返回一个 InjectionConfig.Builder 对象。
                  .customFile(Collections.singletonMap("controller.java","template/controller.java")):调用 Builder 对象的 .customFile 方法,
                  用于添加一个自定义的模板文件,键值对 "controller.java" 和 "template/controller.java" 分别表示该模板的文件名和路径。
                 */
                .execute();

效果展示
image.png
image.png

Reference

代码生成器(新) | MyBatis-Plus
官网样例MySQLGeneratorTest
FreeMarker 中文官方参考手册
利用Mybatisplus-generator+freemarker编写一个独属于你的springboot代码生成程序
看了我的 mybatis-plus 用法,全公司同事开始悄悄模仿了。。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值