本文是介绍基于mysql数据库实现的springboot项目
1.引入jar包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.17.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.17.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</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> <!--引入mysql相关jar包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--引入mybatis-plus jar包-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.2.0</version>
</dependency>
2.添加application.properties文件
server.port=8090
logging.file.name=logs/test.log
# mysql
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC&allowPublicKeyRetrieval=true
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#mybatis-plus
mybatis-plus.configuration.auto-mapping-behavior=full
mybatis-plus.configuration.map-underscore-to-camel-case=true
mybatis-plus.configuration.call-setters-on-nulls=true
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
mybatis-plus.mapper-locations=com.demo.dao.mapper.*Mapper.xml
3.添加config文件
package com.demo.configs;
import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
/**
* MybatisPlusConfig
*
* @Description
*/
@Configuration
@EnableTransactionManagement
@MapperScan("com.demo.dao.mapper")
public class MybatisPlusConfig {
/**
* 配置乐观锁插件
* @return
*/
@Bean
public OptimisticLockerInterceptor optimisticLockerInterceptor() {
return new OptimisticLockerInterceptor();
}
/**
* 分页插件
* @return
*/
@Bean
public PaginationInterceptor paginationInterceptor(){
return new PaginationInterceptor();
}
}
4.entity层
package com.demo.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
/**
* SearchRecordEntity
*
* @Description
*/
@Data
@TableName("t_search_record")
public class SearchRecordEntity{
/**
* 主键ID
*/
@TableId(type = IdType.AUTO)
private Integer id;
/**
* 名称
*/
private String name;
/**
* 备注
*/
private String remark;
}
5.dao层
package com.demo.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.demo.entity.SearchRecordEntity;
import org.springframework.stereotype.Repository;
/**
* SearchRecordDao
*
* @Description
*/
@Repository
public interface SearchRecordMapper extends BaseMapper<SearchRecordEntity> {
}
6.mapper层
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.demo.dao.SearchRecordMapper">
</mapper>
7.service层
package com.demo.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.demo.dao.SearchRecordMapper;
import com.demo.dto.SearchRecordRequest;
import com.demo.entity.SearchRecordEntity;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.*;
/**
* SearchRecordService
*
* @Description
*/
@Service
@Slf4j
public class SearchRecordService extends ServiceImpl<SearchRecordMapper, SearchRecordEntity> {
/**
* 获取搜索记录列表接口
*
* @param recordRequest
* @return
*/
public IPage<SearchRecordEntity> findAll(SearchRecordRequest recordRequest) {
Map<String, Object> result = new HashMap<>();
List<SearchRecordEntity> recordEntities = new ArrayList<>();
IPage<SearchRecordEntity> page = new Page<>();
page.setSize(recordRequest.getPageSize());
page.setCurrent(recordRequest.getPage());
QueryWrapper<SearchRecordEntity> queryWrapper = new QueryWrapper<>();
if (StringUtils.isNotEmpty(recordRequest.getName())) {
queryWrapper.like("name", recordRequest.getName());
}
queryWrapper.orderByDesc("id");
IPage<SearchRecordEntity> searchRecords = this.page(page, queryWrapper);
return searchRecords;
}
}
8.controller层
package com.demo.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.api.R;
import com.demo.dto.SearchRecordRequest;
import com.demo.entity.SearchRecordEntity;
import com.demo.service.SearchRecordService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
* SearchRecordController
*
* @Description
*/
@Slf4j
@RestController
@RequestMapping(value = "esp/search-record")
public class SearchRecordController {
@Resource
private SearchRecordService searchRecordService;
/**
* 查询搜索记录列表接口
*
* @param recordRequest
* @return
*/
@GetMapping("/findAll")
public R<IPage<SearchRecordEntity>> findAll(SearchRecordRequest recordRequest) {
try {
if (recordRequest.getPage() == null || recordRequest.getPageSize() == null) {
return R.failed("page或pageSize不能为空");
}
return R.ok(searchRecordService.findAll(recordRequest));
} catch (Exception e) {
log.error("查询搜索记录列表接口异常:{}", e);
return R.failed("查询搜索记录列表接口异常:" + e.getMessage());
}
}
}
9.服务启动类
package com.demo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan(basePackages = "com.demo.dao")
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
10.访问controller层接口验证