IDEA中采用spring initialzer...创建,jdk选择8,maven,jar。。。springboot版本2.5.0(稳定)
项目依赖:


- "1.0" encoding="UTF-8"?>
"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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
-
4.0.0 -
-
org.springframework.boot -
spring-boot-starter-parent -
2.5.0 -
-
-
com.itheima -
springboot_09_ssm -
0.0.1-SNAPSHOT -
springboot_09_ssm -
Demo project for Spring Boot -
-
1.8 -
-
-
-
org.springframework.boot -
spring-boot-starter-web -
-
-
org.mybatis.spring.boot -
mybatis-spring-boot-starter -
2.2.0 -
-
-
-
mysql -
mysql-connector-java -
runtime -
-
-
org.springframework.boot -
spring-boot-starter-test -
test -
-
-
-
com.alibaba -
druid -
1.1.16 -
-
-
-
-
-
-
org.springframework.boot -
spring-boot-maven-plugin -
-
-
-
-
-
- spring:
- datasource:
- type: com.alibaba.druid.pool.DruidDataSource
- driver-class-name: com.mysql.cj.jdbc.Driver
- url: jdbc:mysql://localhost:3306/www #?servierTimezone=UTC
- username: root
- password: root
- server:
- port: 80
用于存储实体类
- public class Book {
- private Integer id;
- private String type;
- private String name;
- private String description;
- @Override
- public String toString() {
- return "Book{" +
- "id=" + id +
- ", type='" + type + '\'' +
- ", name='" + name + '\'' +
- ", description='" + description + '\'' +
- '}';
- }
-
- public Integer getId() {
- return id;
- }
-
- public void setId(Integer id) {
- this.id = id;
- }
-
- public String getType() {
- return type;
- }
-
- public void setType(String type) {
- this.type = type;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getDescription() {
- return description;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
- }
用于操作数据库
- @Mapper //注意mapper
- public interface BookDao {
- @Insert("insert into tbl_book (type,name,description) values(#{type},#{name},#{description})")
- public int save(Book book);
- @Update("update tbl_book set type = #{type}, name = #{name}, description = #{description} where id = #{id}")
- public int update(Book book);
- @Delete("delete from tbl_book where id = #{id}")
- public int delete(Integer id);
- @Select("select * from tbl_book where id = #{id}")
- public Book getById(Integer id);
- @Select("select * from tbl_book")
- public List
getAll(); - }
用于业务实现
接口:
- @Transactional
- public interface BookService {
- /**
- * 保存
- * @param book
- * @return
- */
- public boolean save(Book book);
- /**
- * 修改
- * @param book
- * @return
- */
- public boolean update(Book book);
- /**
- * 按id删除
- * @param id
- * @return
- */
- public boolean delete(Integer id);
- /**
- * 按id查询
- * @param id
- * @return
- */
- public Book getById(Integer id);
- /**
- * 查询全部
- * @return
- */
- public List
getAll(); - }
类:
- @Service
- public class BookServiceImpl implements BookService {
- @Autowired
- private BookDao bookDao;
-
- public boolean save(Book book) {
- return bookDao.save(book) > 0;
- }
-
- public boolean update(Book book) {
- return bookDao.update(book) > 0;
- }
-
- public boolean delete(Integer id) {
- return bookDao.delete(id) > 0;
- }
-
- public Book getById(Integer id) {
-
- return bookDao.getById(id);
- }
-
- public List
getAll() { - return bookDao.getAll();
- }
- }
用于控制业务流程
- @RestController
- @RequestMapping("/books")
- public class BookController {
- @Autowired
- private BookService bookService;
-
- @PostMapping
- public Result save(@RequestBody Book book) {
- boolean flag = bookService.save(book);
- return new Result(flag ? Code.SAVE_OK:Code.SAVE_ERR,flag);
- }
-
- @PutMapping
- public Result update(@RequestBody Book book) {
- boolean flag = bookService.update(book);
- return new Result(flag ? Code.UPDATE_OK:Code.UPDATE_ERR,flag);
- }
-
- @DeleteMapping("/{id}")
- public Result delete(@PathVariable Integer id) {
- boolean flag = bookService.delete(id);
- return new Result(flag ? Code.DELETE_OK:Code.DELETE_ERR,flag);
- }
-
- @GetMapping("/{id}")
- public Result getById(@PathVariable Integer id) {
- Book book = bookService.getById(id);
- Integer code = book != null ? Code.GET_OK : Code.GET_ERR;
- String msg = book != null ? "" : "数据查询失败,请重试!";
- return new Result(code,book,msg);
- }
-
- @GetMapping
- public Result getAll() {
- List
bookList = bookService.getAll(); - Integer code = bookList != null ? Code.GET_OK : Code.GET_ERR;
- String msg = bookList != null ? "" : "数据查询失败,请重试!";
- return new Result(code,bookList,msg);
- }
- }
- public class Code {
- public static final Integer SAVE_OK = 20011;
- public static final Integer DELETE_OK = 20021;
- public static final Integer UPDATE_OK = 20031;
- public static final Integer GET_OK = 20041;
-
- public static final Integer SAVE_ERR = 20010;
- public static final Integer DELETE_ERR = 20020;
- public static final Integer UPDATE_ERR = 20030;
- public static final Integer GET_ERR = 20040;
-
- public static final Integer SYSTEM_ERR = 50001;
- public static final Integer SYSTEM_TIMEOUT_ERR = 50002;
- public static final Integer SYSTEM_UNKNOW_ERR = 59999;
-
- public static final Integer BUSINESS_ERR = 60002;
-
- }
- public class Result {
- private Object data;
- private Integer code;
- private String msg;
-
- public Result() {
- }
-
- public Result(Integer code,Object data) {
- this.data = data;
- this.code = code;
- }
-
- public Result(Integer code, Object data, String msg) {
- this.data = data;
- this.code = code;
- this.msg = msg;
- }
-
- public Object getData() {
- return data;
- }
-
- public void setData(Object data) {
- this.data = data;
- }
-
- public Integer getCode() {
- return code;
- }
-
- public void setCode(Integer code) {
- this.code = code;
- }
-
- public String getMsg() {
- return msg;
- }
-
- public void setMsg(String msg) {
- this.msg = msg;
- }
- }
- @RestControllerAdvice
- public class ProjectExceptionAdvice {
- @ExceptionHandler(SystemException.class)
- public Result doSystemException(SystemException ex){
- //记录日志
- //发送消息给运维
- //发送邮件给开发人员,ex对象发送给开发人员
- return new Result(ex.getCode(),null,ex.getMessage());
- }
-
- @ExceptionHandler(BusinessException.class)
- public Result doBusinessException(BusinessException ex){
- return new Result(ex.getCode(),null,ex.getMessage());
- }
-
- @ExceptionHandler(Exception.class)
- public Result doOtherException(Exception ex){
- //记录日志
- //发送消息给运维
- //发送邮件给开发人员,ex对象发送给开发人员
- return new Result(Code.SYSTEM_UNKNOW_ERR,null,"系统繁忙,请稍后再试!");
- }
- }
封装异常类
- public class BusinessException extends RuntimeException{
- private Integer code;
-
- public Integer getCode() {
- return code;
- }
-
- public void setCode(Integer code) {
- this.code = code;
- }
-
- public BusinessException(Integer code, String message) {
- super(message);
- this.code = code;
- }
-
- public BusinessException(Integer code, String message, Throwable cause) {
- super(message, cause);
- this.code = code;
- }
-
- }
- public class SystemException extends RuntimeException{
- private Integer code;
-
- public Integer getCode() {
- return code;
- }
-
- public void setCode(Integer code) {
- this.code = code;
- }
-
- public SystemException(Integer code, String message) {
- super(message);
- this.code = code;
- }
-
- public SystemException(Integer code, String message, Throwable cause) {
- super(message, cause);
- this.code = code;
- }
-
- }
- @SpringBootTest
- public class BookServiceTest {
-
- @Autowired
- private BookService bookService; //测试哪个 装配哪个
-
- // @Test
- // public void testGetById(){
- // Book book = bookService.getById(2);
- // System.out.println(book);
- // }
-
- @Test
- public void testGetAll(){
- List
all = bookService.getAll(); - System.out.println(all);
- }
-
- }