小工具知识网

当前位置: 首页 > 行业知识 > mybatis-plus整合spring boot极速入门

行业知识

mybatis-plus整合spring boot极速入门

2026-11-15 10:56:14 来源:互联网转载

使���mybatis-plus整合spring boot,接下来我来操作一番。

一,创建spring boot工程

勾选下面的选项

紧接着,还有springboot和依赖我们需要选。

这样我们就创建好了我们的spring boot,项目。

简化目录结构:

我们发现,这些零碎文件很多,占时用不到的,就先删除。

看看简化后的,项目目录结构。

修改boot项目版本:
启动项目:

找到启动来,把我们的项目跑起来。

可以看到项目是正常启动的

二,添加依赖

添加mybatis-plus依赖:
                    com.baomidou            mybatis-plus-boot-starter            3.5.5        
添加mysql依赖:
                            mysql            mysql-connector-java            8.0.28        
yml文件的配置:

把一properties结尾的文件,改成yml结尾的格式

 改后的效果:

我添加了下面的配置:

#项目的端口server:  port: 8080#mysql配置spring:  datasource:    driver-class-name: com.mysql.cj.jdbc.Driver    url: jdbc:mysql://localhost:3306/mp_db?serverTimezone=UTC    username: root    password: root#mabatis-plus的配置mybatis-plus:  configuration:    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 打印sql日志    map-underscore-to-camel-case: true  # 是否开启驼峰命名转换
运行项目:

项目还是正常启动的

三,创建各种业务层

我们把mapper,service,controller,utils都创建好,看看目录结构。

Emp实体类

代码:

@Datapublic class Emp {    private Long id; // 员工ID    private String name; // 员工姓名    private String password; // 密码    private Integer age; // 年龄    private String tel; // 电话号码}

mapper接口:

代码:

@Mapperpublic interface EmpMapper extends BaseMapper {}
EmpService接口:

代码:

public interface EmpSerevice extends IService {}
 EmpServiceImpl:实现类

代码:

@Servicepublic class EmpServiceImpl extends ServiceImpl implements EmpSerevice{}
 EmpController类:

代码:

@RestController@RequestMapping("/emps")public class EmpController {}
新建一个测试类:

代码:

@Slf4j@SpringBootTestpublic class TestMp {}

四,测试mybatis-plus的service层接口:

测试查询:
mp的service提供的查询方法:

getById   通常用于表示根据ID获取数据的方法 。

getOne  通常用于查询符合条件的单条记录。

getMap  根据wrapper条件,可以查询多条数据。

查询常用的拼接关系条件:

通常是写 wrapper里面的:

就比如 >, >=, builder.typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> { int typeCode = metaInfo.getJdbcType().TYPE_CODE; if (typeCode == Types.SMALLINT) { // 自定义类型转换 return DbColumnType.INTEGER; } return typeRegistry.getColumnType(metaInfo); })) .packageConfig(builder -> { builder.parent("com.sdep") // 设置父包名 .controller("controller") .entity("domain.po") // 设置实体类包名 .service("service") // 设置service包名 .serviceImpl("service.impl") // 设置service实现类包名 .mapper("mapper") // 设置mapper包名 //.moduleName("address") // 设置父包模块名 .pathInfo(Collections.singletonMap(OutputFile.xml, "D:\\cloud-java\\allcode2\\gen\\mapper")); // 设置mapperXml生成路径 }) .strategyConfig(builder -> { builder.addInclude("address") // 设置需要生成的表名 .addTablePrefix("t_", "c_") // 设置过滤表前缀 .controllerBuilder().enableRestStyle() // 开启restful风格控制器 .enableFileOverride() // 覆盖已生成文件 .entityBuilder().enableLombok(); // 开启lombok模型,默认是false }) .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板 .execute(); }

 将生成的实体、Mapper、Service、Controller等对应的类放置到项目中。即可

4,点击运行:

5,查看生成的目录:

 

完整版的代码生成器,代码:

public class MybatisPlusGeneratorTest {    public static void main(String[] args) {        String url = "jdbc:mysql://127.0.0.1:3306/mp?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true";        FastAutoGenerator.create(url , "root", "root")                .globalConfig(builder -> {                    builder.author("JBL") // 设置作者                            .enableSwagger() // 开启 swagger 模式                            .outputDir("D:\itcast\generatedCode"); // 指定输出目录                })                .dataSourceConfig(builder -> builder.typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> {                    int typeCode = metaInfo.getJdbcType().TYPE_CODE;                    if (typeCode == Types.SMALLINT) {                        // 自定义类型转换                        return DbColumnType.INTEGER;                    }                    return typeRegistry.getColumnType(metaInfo);                }))                .packageConfig(builder -> {                    builder.parent("com.itheima.mp") // 设置父包名                            .controller("controller")                            .entity("domain.po") // 设置实体类包名                           .service("service") // 设置service包名                           .serviceImpl("service.impl") // 设置service实现类包名                           .mapper("mapper") // 设置mapper包名                            //.moduleName("address") // 设置父包模块名                            .pathInfo(Collections.singletonMap(OutputFile.xml, "D:\itcast\generatedCode\mapper")); // 设置mapperXml生成路径                })                .strategyConfig(builder -> {                    builder.addInclude("address") // 设置需要生成的表名                            .addTablePrefix("t_", "c_") // 设置过滤表前缀                            .controllerBuilder().enableRestStyle() // 开启restful风格控制器                            .enableFileOverride() // 覆盖已生成文件                            .entityBuilder().enableLombok(); // 开启lombok模型,默认是false                })                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板                .execute();    }}

 十,静态工具类:

使用Db实现如下需求:

1、根据id查询用户;

2、查询名字中包含o且年龄大于8岁的;

3、更新用户名为tom的年龄为18

测试根据ID查询:
 

代码:

@SpringBootTestpublic class DbTest {    @Test    @DisplayName("根据id查询用户")    public void testById(){        Emp emp = Db.getById(1L, Emp.class);        System.out.println(emp);    }}

结果:

 

测试查询名字中包含j且年龄大于8岁的
 

代码:

    @Test    @DisplayName("测试查询名字中包含j且年龄大于8岁的")    void testWrapper(){        //查询参数设置        List empList = Db.lambdaQuery(Emp.class).like(Emp::getName, "j")                .ge(Emp::getAge, 8)                .list();        //遍历        empList.forEach(emp -> System.out.println(emp));    }

结果:

 

 更新用户名为tom的年龄为18

代码:

    @Test    @DisplayName("更新用户名为tom的年龄为18")    void testUpdate(){       Db.lambdaUpdate(Emp.class)               .set(Emp::getAge, 18)               .eq(Emp::getName, "tom")                .update();    }

结果:

上一篇:Tar格式全解析,从入门到精通的指南!

下一篇:UBound函数详解,定义、作用及使用方法揭秘