依赖
<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>
<!-- MyBatis-Plus 核心依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3</version>
</dependency>
<build>
<resources>
<!-- 扫描src/main/java下所有xx.xml文件 -->
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<!--扫描resources下所有资源-->
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
表
#创建表
DROP TABLE IF EXISTS `consult`;
CREATE TABLE `consult` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '消息ID',
`title` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '消息标题',
`content` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '消息内容',
`deleted` tinyint(1) NULL DEFAULT 0 COMMENT '逻辑删除 1已删除, 0未删除',
`create_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
#创建索引
#INDEX `idx_title`(`title`) UsING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 COLLATE = utf8mb4_general_ci COMMENT = '消息表' ROW_FORMAT = Compact;
#添加字段
ALTER TABLE `consult`
ADD COLUMN `performance` varchar(16) NULL COMMENT '绩效';
配置文件
server:
port: 8090
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/systemboot?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8
username: root
password: 123456
# MyBatis-plus配置
# 1.xml文件放在java的mapper下xml文件中,路径要写全,并且pom中要加构建扫描src/main/java:扫描java下的所有文件
# mapper-locations: classpath:com/example/demo/demos/web/mapper/xml/*.xml
# 2.xml文件放在resource的mapper下xml文件中,从resource文件名开始写路径,并且pom中要加构建扫描src/main/resources
# 扫描resource下的所有文件
mybatis-plus:
mapper-locations: classpath:/com/example/demo/demos/web/mapper/xml/*.xml
type-aliases-package: com.example.demo.demos.web.entity
mybatis-plus配置
@Configuration
@ComponentScan(basePackages = {"com.example"})
public class MyBatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
//分页插件
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.H2));
//乐观锁插件
// interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
return interceptor;
}
}
controller
@RestController
@RequestMapping("/consult02")
public class ConsultController {
@Autowired
private ConsultService consultService;
@GetMapping("/selectAll02")
public List<Consult> getAllConsults(){
return consultService.getAllConsults();
}
@GetMapping("/getById02/{id}")
// @ApiOperation(value = "根据id查询")
public Object getConsultById(@PathVariable int id) {
return consultService.getConsultById(id);
}
@PostMapping("/save02")
// @ApiOperation(value = "添加")
public boolean createConsult(@RequestBody Consult consult) {
return consultService.createConsult(consult);
}
@PostMapping("/update02/{id}")
// @ApiOperation(value = "更新")
public boolean updateConsult(@PathVariable Integer id, @RequestBody Consult consult) {
consult.setId(id);
return consultService.updateConsult(consult);
}
@GetMapping("/delete02/{id}")
// @ApiOperation(value = "删除")
public boolean deleteConsult(@PathVariable Integer id) {
return consultService.deleteConsult(id);
}
@GetMapping("/pageList02")
public Object pageList(@RequestParam(value = "pageNum",required = false, defaultValue = "1") Integer pageNum,
@RequestParam(value = "pageSize",required = false, defaultValue = "3") Integer pageSize,
@RequestBody Consult consult){
return consultService.selectPage(pageNum,pageSize,consult);
}
}
service
public interface ConsultService extends IService<Consult> {
Object getConsultById(int id);
List<Consult> getAllConsults();
boolean createConsult(Consult consult);
boolean updateConsult(Consult consult);
boolean deleteConsult(Integer id);
Page<Consult> selectPage(int pageNum, int pageSize, Consult consult);
}
@Service
public class ConsultServiceImpl extends ServiceImpl<ConsultMapper,Consult> implements ConsultService {
@Autowired
private ConsultMapper consultMapper;
@Override
public Object getConsultById(int id) {
QueryWrapper<Consult> wrapper = new QueryWrapper<>();
wrapper.eq("deleted",0)
.eq("id",id);
Consult consult=consultMapper.selectOne(wrapper);
return consult;
}
@Override
public List<Consult> getAllConsults() {
return consultMapper.selectList(new QueryWrapper<Consult>().eq("deleted",0));
}
@Override
public boolean createConsult(Consult consult) {
consult.setCreateTime(new Date());
consult.setUpdateTime(new Date());
boolean result = save(consult);
return result;
}
@Override
public boolean updateConsult(Consult consult) {
consult.setUpdateTime(new Date());
int result = consultMapper.updateById(consult);
return result>0;
}
@Override
public boolean deleteConsult(Integer id) {
int result = consultMapper.deleteById(id);
return result>0;
}
@Override
public Page<Consult> selectPage(int pageNum, int pageSize, Consult consult) {
QueryWrapper<Consult> wrapper = new QueryWrapper<>();
if (ObjectUtils.isNotEmpty(consult)){
wrapper.and(i->i.like("title",consult.getTitle())
.or().eq("content",consult.getContent())
.or().eq("update_time",consult.getUpdateTime()));
}
wrapper.eq("deleted",0).orderByDesc("create_time");
Page<Consult> page = new Page<>(pageNum,pageSize);
Page<Consult> pageList = (Page<Consult>) consultMapper.selectPage(page,wrapper);
return pageList;
}
}
mapper
@Mapper
public interface ConsultMapper extends BaseMapper<Consult> {
}
<?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.example.demo.demos.web.mapper.ConsultMapper">
</mapper>
entity
@Data
public class Consult {
//使用mybatis-plus自带的新增
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
private String title;
private String content;
@TableLogic(value = "0",delval = "1")
private Integer deleted;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
//返回的日期类型字段数据解析成字符串 xml中查询返回字段create_time更名createTime
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date createTime;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date updateTime;
}