#IT明星不是梦#【从0开始Web开发实战】SpringBo

目录:

创新互联是一家集网站建设,三河企业网站建设,三河品牌网站建设,网站定制,三河网站建设报价,网络营销,网络优化,三河网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

1. SpringBoot集成MyBatis和MyBatisPlus

2. 配置和运行代码生成工具

3. 单元测试Service和Mapper的CRUD功能函数

4. REST接口调用数据库读写功能

5. 问答:MyBatis Plus Generator生成entity没有get/set函数?

SpringBoot是使用最多的Java开发框架,特点是自动化配置依赖模块,提供的一系列starter脚手架便于使用,充分体现了“开箱即用”和“约定优于配置”原则。

MyBatis是一个数据库持久层框架,采用ORM架构,映射实体和数据库,对JDBC进行封装,支持定制化SQL、存储过程以及高级映射,使得开发者只需关注SQL语句和CRUD操作,而不需要处理驱动加载、创建和管理连接等复杂的过程。

MyBatis通过xml或注解的方式将要执行的操作配置起来,并通过Java对象和SQL动态参数映射,生成要执行的SQL语句,MyBatis框架执行后将结果映射为Java对象返回。

MyBatis Plus对MyBatis进一步增强、简化开发和提高效率。本文分享MyBatis Plus和代码生成器的集成方法,对Service和Mpper功能单元测试,并封装一个测试接口。


代码文件

功能要点

SpringBoot集成MyBatis, MyBatisPlus

pom.xml

引入MyBatis和MyBatis Plus依赖:mybatis-spring-boot-starter,mybatis-plus-boot-starter,mybatis-plus-generator

application.yml

配置数据源

代码生成工具

MyBatisPlusGenerator.java

MyBatis Plus提供了易用高效的代码生成工具,配置路径和包名称。

生成代码文件

entity, mapper, service

继承基类BaseMapper和IService封装的CRUD功能函数

单元测试

MapperTest.java, ServiceTest.java

测试CRUD操作

功能调用

CheckController.java

增加REST接口/chk/db,测试数据库读写功能

项目代码:https://github.com/jextop/StarterApi/

MyBatis-Plus官网:https://mybatis.plus/guide/

一,SpringBoot集成MyBatis和MyBatisPlus

1. 新建SpringBoot项目时,选中MyBatis,将自动添加MyBatis依赖。

#IT明星不是梦#【从0开始Web开发实战】SpringBo

2. 在pom.xml中添加MyBatis Plus和Generator依赖。注意运行代码生成工具时,需要一个页面模板库,示例使用freemarker。


    org.mybatis.spring.boot
    mybatis-spring-boot-starter
    2.1.1


    com.baomidou
    mybatis-plus-boot-starter
    3.3.0


    com.baomidou
    mybatis-plus-generator
    3.3.0


    org.springframework.boot
    spring-boot-starter-freemarker

3. 在application.yml中配置数据源:

spring:
  datasource:
    driver-class-name:
com.MySQL.cj.jdbc.Driver
    url:jdbc:mysql://127.0.0.1:3306/starter?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=UTC
    username:root
    password:root

二,配置和运行代码生成工具

1. MyBatis Plus提供了一个功能强大的代码生成工具AutoGenerator,在代码中修改文件路径和包名称:MyBatisPlusGenerator.java

2. 注意StrategyConfig.setEntityLombokModel(),Lombok默认为打开模式,建议设置为false,由于lombok对代码侵入程度较大并且依赖IDE插件,谨慎使用。

3. 运行MyBatisPlusGenerator.main(),生成器可以放在一个独立的项目中。

4. 生成entity, mapper和service,继承基类BaseMapper和IService封装的CRUD功能函数。

#IT明星不是梦#【从0开始Web开发实战】SpringBo

三,单元测试Mapper和Service的CRUD功能函数

CRUD是创建(Create)、读取(Retrieve)、更新(Update)和删除(Delete)4种数据库操作的首字母缩写,LogServiceImpl实现IService接口,聚合LogMapper功能:

#IT明星不是梦#【从0开始Web开发实战】SpringBo

测试LogService的读写数据库功能:

@SpringBootTest
public classLogServiceTest {
    @Autowired
    LogServiceImpllogService;

    @Test
    public voidtestSave() {
        booleanret =logService.save(newLog() {{
            setSummary(String.format("service: %s", newDate()));
        }});

        LogUtil.info(ret);
        Assertions.assertTrue(ret);
    }

    @Test
    public voidtestList() {
        List ret =logService.list(newQueryWrapper()
                .orderByDesc("id")
                .last(true,"limit 2")
        );

        ret.forEach(LogUtil::info);
        Assertions.assertFalse(ret.isEmpty());
    }
}

四,REST接口调用数据库读写功能

1. 增加RestController:CheckController.java

2. 增加REST接口/chk/db,调用mapper读写数据库

@GetMapping(value="/chk/db")
publicObjectdb(@RequestAttribute(required=false) String ip) {
    // Write a log to db
    Log log =newLog() {{
        setSummary(String.format("db_test_%s_%s_数据库",ip, newDate()));
    }};
    logMapper.insert(log);

    // Read log from db
    Log ret =logMapper.selectOne(newQueryWrapper()
            .orderByDesc("id")
            .eq("summary",log.getSummary())
    );
    Integer count =logMapper.selectCount(null);

    return newHashMap() {{
        put("chk","db");
        put("msg",log.getSummary());
        put("status",log.getSummary().equals(ret.getSummary()));
        put("count",count);
    }};
}

3. Postman调用接口示例

#IT明星不是梦#【从0开始Web开发实战】SpringBo

五,问答:MyBatis Plus Generator生成entity没有get/set函数?

代码生成器在生成Entity时,策略配置提供了一个lombok属性,可以指定是否使用lombok模式,对应属性访问器的生成方式。

l MyBatis Plus提供的代码生成器示例,打开了lombok模式:

#IT明星不是梦#【从0开始Web开发实战】SpringBo

l 生成的Entity包含@Data注解,将自动生成get/set函数

@Data
@EqualsAndHashCode(callSuper=true)
@Accessors(chain=true)
public classLogextendsBaseEntity {
    private static final longserialVersionUID=1L;

    privateIntegerops;

    privateStringsummary;

}

由于lombok对代码侵入程度较大并且依赖IDE插件,在不使用lombok时,只需设置属性关闭即可:StrategyConfig.setEntityLombokModel(false);

l StrategyConfig默认是关闭lombok模式

l 设置为false或者删除该行代码,生成的Entity将生成get/set函数

public classAuthextendsBaseEntity {
    private static final longserialVersionUID=1L;

    privateStringname;

    publicStringgetName() {
        returnname;
    }

    public voidsetName(String name) {
        this.name= name;
    }

}

--------------------------------

如果您觉得这篇文章对您有帮助,请点个“赞”,博主感激不尽!

Jext技术社区专注领域:软件工程实践,JIRA研发管理,分布式系统架构,软件质量保障。

#IT明星不是梦#【从0开始Web开发实战】SpringBo


当前标题:#IT明星不是梦#【从0开始Web开发实战】SpringBo
文章来源:http://myzitong.com/article/pjiigh.html