1.引入相关依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.12.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3.1</version>
</dependency>
<!-- Mysql 驱动文件 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- log4j2 -->
<!-- springboot 整合小辣椒lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</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>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<excludes>
<exclude>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
2. 配置yml
server:
port: 10200
servlet:
context-path: /api/test
spring:
application:
name: springBoot-Test
#返回json的全局时间格式
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
#数据库
datasource:
url: jdbc:mysql:///test?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&tinyInt1isBit=false&allowMultiQueries=true
username:
password: ''
#使用新版mysql驱动配置时注释掉
driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
max-lifetime: 300000
mybatis-plus:
mapper-locations: classpath:mappers/**/**Mapper.xml,classpath:mappers/**Mapper.xml
typeAliasesPackage: com.zl.example.springtest.entity
global-config:
db-config:
# logic-delete-field: deleted_at # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)
logic-delete-field: deletedAt
logic-delete-value: now() # 逻辑已删除值(默认为 1)
logic-not-delete-value: "null" # 逻辑未删除值(默认为 0)
# 支持统配符 * 或者 ; 分割
# typeEnumsPackage:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql日志
3. 配置完成后,启动类添加相关注解
@SpringBootApplication()
@MapperScan("com.zl.example.springtest")
public class SpringTestApplication {
public static void main(String[] args) {
SpringApplication.run(SpringTestApplication.class, args);
}
}
4. 创建三层架构层级,mapper/service/contrller,基础代码如下:
entity:
@Data
@Accessors(chain = true)
@TableName("a_account")
public class Account {
@TableId
private Long id;
@TableField("name")
private String name;
@TableField("created_at")
private Date createdAt;
@TableField("updated_at")
private Date updatedAt;
@TableField("deleted_at")
private Date deletedAt;
@TableField(exist = false)
private List<Long> idList;
}
service:
/**
* 公共列表
*
* @param vo
* @return
*/
List<Account> getListByVo(Account vo);
/**
* 详情
*
* @param vo vo
* @return
*/
Account getDetailByVo(Account vo);
/**
* 新增
*
* @param vo vo
* @return
*/
boolean add(Account vo);
/**
* 编辑
*
* @param vo vo
* @return
*/
boolean updateById(Account vo);
/**
* 刪除批量
*
* @param vo vo
* @return
*/
boolean removeByIds(Account vo);
serviceImpl:
@Override
public List<Account> getListByVo(Account vo) {
QueryWrapper<Account> queryWrapper =new QueryWrapper<>();
return list(queryWrapper);
}
@Override
public Account getDetailByVo(Account vo) {
return getById(vo.getId());
}
@Override
public boolean add(Account vo) {
// 如需要判断逻辑,在此处另加逻辑判断即可
return save(vo);
}
@Override
public boolean updateById(Account vo) {
if (vo.getId() == null)
return false;
return updateById(vo);
}
@Override
public boolean removeByIds(Account vo) {
if (ListUtil.isEmpty(vo.getIdList()) && vo.getId() == null) {
return false;
}
if (ListUtil.isEmpty(vo.getIdList())) {
vo.setIdList(new ArrayList<>());
}
vo.getIdList().add(vo.getId());
return removeByIds(vo.getIdList());
}
controller:
@RestController
@RequestMapping("/account")
public class Controller {
@Resource
private AccountService accountServiceImpl;
/**
* 集合
* @param vo
* @return
*/
@RequestMapping(value = "list",method = RequestMethod.GET)
public List<Account> list(Account vo){
return accountServiceImpl.getListByVo(vo);
}
/**
* 详情
* @param vo
* @return
*/
@RequestMapping(value = "detail",method = RequestMethod.GET)
public Account detail(Account vo){
return accountServiceImpl.getDetailByVo(vo);
}
/**
* 添加
* @param vo
* @return
*/
@RequestMapping(value = "save",method = RequestMethod.POST)
public boolean save(Account vo){
return accountServiceImpl.add(vo);
}
/**
* 修改
* @param vo
* @return
*/
@RequestMapping(value = "update",method = RequestMethod.POST)
public boolean update(Account vo){
return accountServiceImpl.updateById(vo);
}
/**
* 删除
* @param vo
* @return
*/
@RequestMapping(value = "remove",method = RequestMethod.POST)
public boolean remove(Account vo){
return accountServiceImpl.removeByIds(vo);
}
5. 如果还需要配置分页查询,配置类如下:
@Configuration
public class MybatisPlusConfig {
/**
* 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题(该属性会在旧插件移除后一同移除)
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
interceptor.addInnerInterceptor(new BlockAttackInnerInterceptor());
return interceptor;
}
}
到这就完成了springboot+mp的基础框架搭建以及实现了普通的增删查改,当然平时使用接口时,使用的都是全局统一返回类,这个需要注意哦,小编在这里就没有使用全局统一返回类了。