1.项目结构
2.pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.wnhz.bm</groupId>
<artifactId>book-mall-v1.0</artifactId>
<version>1.0-SNAPSHOT</version>
<description>在线买书v1.0版本</description>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.druid.version>1.2.18</project.druid.version>
<project.mybatisplus.version>3.5.3.1</project.mybatisplus.version>
</properties>
<!-- 起步依赖-->
<parent>
<artifactId>spring-boot-starter-parent</artifactId>
<groupId>org.springframework.boot</groupId>
<version>2.6.13</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${project.druid.version}</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${project.mybatisplus.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
<version>4.12</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>spring-boot-maven-plugin</artifactId>
<groupId>org.springframework.boot</groupId>
</plugin>
</plugins>
</build>
</project>
3.yml文件配置
server:
port: 9092
spring:
application:
name: book-mall
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/mydata5?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
username: root
password: 123456
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
4.数据表的设计
5.实体类的设计
package com.wnhz.bm.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("btype_tab")
public class BookType {
@TableId(value="btype_id",type = IdType.AUTO)
private Long id;
@TableField("btype_name")
private String name;
@TableField("btype_createtime")
private Date createTime;
@TableField("btype_updatetime")
private Date updateTime;
@TableField("btype_createby")
private String createBy;
}
6.继承接口
package com.wnhz.bm.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.wnhz.bm.entity.BookType;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface IBookTypeDao extends BaseMapper<BookType> {
}
7.测试dao层
按住alt+回车,选择创建Test
创建好的文件的测试代码如下:
package com.wnhz.bm.dao;
import com.wnhz.bm.entity.BookType;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.Date;
@SpringBootTest
@RunWith(SpringJUnit4ClassRunner.class)
public class IBookTypeDaoTest {
@Autowired
private IBookTypeDao iBookTypeDao;
@Test
public void save(){
// iBookTypeDao.insert(new BookType(null,"武侠小说",new Date(),new Date(),"好丰富"));
iBookTypeDao.selectById(1);
}
}
8.设计service层
创建IBookTypeService接口
package com.wnhz.bm.service;
import com.wnhz.bm.entity.BookType;
import java.util.List;
public interface IBookTypeService {
List<BookType> findAll();
List<BookType> findByName(String name);
List<BookType> OrderByCreateTime();
}
创建BookTypeServiceImpl实现接口
package com.wnhz.bm.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.wnhz.bm.dao.IBookTypeDao;
import com.wnhz.bm.entity.BookType;
import com.wnhz.bm.service.IBookTypeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Service
@Transactional
public class BookTypeServiceImpl implements IBookTypeService {
@Autowired
private IBookTypeDao iBookTypeDao;
@Override
public List<BookType> findAll() {
return iBookTypeDao.selectList(null);
}
@Override
public List<BookType> findByName(String name) {
QueryWrapper<BookType> wrapper = new QueryWrapper<>();
wrapper.like("btype_name",name);
return iBookTypeDao.selectList(wrapper);
}
@Override
public List<BookType> OrderByCreateTime() {
QueryWrapper<BookType> wrapper = new QueryWrapper<>();
wrapper.orderByDesc("btype_createtime");
return iBookTypeDao.selectList(wrapper);
}
}
测试service功能,按住alt+回车创建Test,测试代码如下
package com.wnhz.bm.service.impl;
import com.wnhz.bm.dao.IBookTypeDao;
import com.wnhz.bm.service.IBookTypeService;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import sun.dc.pr.PRError;
import static org.junit.Assert.*;
@SpringBootTest
@RunWith(SpringJUnit4ClassRunner.class)
public class BookTypeServiceImplTest {
@Autowired
private IBookTypeService ibs;
@Test
public void findAll() {
System.out.println(ibs.findAll());
}
@Test
public void findByName() {
System.out.println(ibs.findByName("武侠"));
}
@Test
public void OrderByCreateTime() {
System.out.println(ibs.OrderByCreateTime());
}
}
9.设计DTO层
创建HttpResp类,存放运行的结构信息
package com.wnhz.bm.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class HttpResp {
private ResultCode resultCode;
private Date time;
private Object results;
}
创建ResultCode枚举,存放运行的结构信息
package com.wnhz.bm.dto;
import java.io.Serializable;
public enum ResultCode implements Serializable {
QUERY_BOOKTYPE_SUCCESS(20001,"查询图书类型成功"),
ORDER_BOOKTYPE_SUCCESS(20002,"图书类型排序成功"),
QUERY_BOOKTYPE_NAME_SUCCESS(20003,"按照类型名称查询成功"),
;
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
private int code;
private String msg;
ResultCode(int code, String msg) {
this.code = code;
this.msg = msg;
}
}
10.设计Controller层
创建BookTypeController
package com.wnhz.bm.controller;
import com.wnhz.bm.dto.HttpResp;
import com.wnhz.bm.dto.ResultCode;
import com.wnhz.bm.entity.Book;
import com.wnhz.bm.entity.BookType;
import com.wnhz.bm.service.IBookTypeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
import java.util.List;
@RestController
@RequestMapping("/api/bt")
public class BookTypeController {
@Autowired
private IBookTypeService ibts;
@GetMapping("/findAll")
public HttpResp findAll(){
List<BookType> list = ibts.findAll();
return new HttpResp(ResultCode.QUERY_BOOKTYPE_SUCCESS,new Date(),list);
}
@GetMapping("/findByName")
public HttpResp findByName(String name){
name = "玄幻";
List<BookType> list = ibts.findByName(name);
return new HttpResp(ResultCode.QUERY_BOOKTYPE_NAME_SUCCESS,new Date(),list);
}
@GetMapping("/orderByCreateTime")
public HttpResp OrderByCreateTime(){
return new HttpResp(ResultCode.ORDER_BOOKTYPE_SUCCESS,new Date(),ibts.OrderByCreateTime());
}
}
测试结果
先运行BookMallApp
package com.wnhz.bm;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class BookMallApp {
public static void main(String[] args) {
SpringApplication.run(BookMallApp.class);
}
}
点击路径的小地球,选择第二个选项
点击运行(第5行绿色运行箭头),结果如下,结果中会呈现出执行的结果信息,执行的时间以及数据