SpringBoot实例
实例功能简单,仅包括用户管理、图书管理及用户下单购买书,项目结构如下所示:

一.脚本
sql.sql
create database springboot; use springboot; create table t_user( id int, name varchar(30), age int ); create table t_book( id int, name varchar(30), price decimal(18,2), remain_num int ); create table t_order( id int, user_id int, user_name varchar(30), book_id int, book_name varchar(30), book_num int, book_price decimal(18,2) );
二.Dao层
UserDao.java
package com.bijian.dao; import com.bijian.entity.User; import org.apache.ibatis.annotations.*; /** * 添加了@Mapper注解之后这个接口在编译时会生成相应的实现类 * 需要注意的是:这个接口中不可以定义同名的方法,因为会生成相同的id * 也就是说这个接口是不支持重载的 */ @Mapper //@Repository public interface UserDao { /* * 用户数据新增 */ @Insert("insert into t_user(id,name,age) values (#{id},#{name},#{age})") void addUser(User user); /* * 用户数据修改 */ @Update("update t_user set name=#{name},age=#{age} where id=#{id}") void updateUser(User user); /* * 用户数据删除 */ @Delete("delete from t_user where id=#{id}") void deleteUser(int id); /* * 根据用户名称查询用户信息 */ @Select("select id,name,age from t_user where name=#{userName}") User findByName(@Param("userName") String userName); /* * 根据用户ID查询用户信息 */ @Select("select id,name,age from t_user where id=#{userId}") User findById(@Param("userId") int userId); /* *根据用户age查询用户信息 */ @Select("select id,name,age from t_user where age=#{userAge}") User findByAge(@Param("userAge") int userAge); }
BookDao.java
package com.bijian.dao; import com.bijian.entity.Book; import org.apache.ibatis.annotations.*; /** * 添加了@Mapper注解之后这个接口在编译时会生成相应的实现类 * 需要注意的是:这个接口中不可以定义同名的方法,因为会生成相同的id * 也就是说这个接口是不支持重载的 */ @Mapper //@Repository public interface BookDao { /* * book数据新增 */ @Insert("insert into t_book(id,name,price,remain_num) values (#{id},#{name},#{price}, #{remainNum})") int addBook(Book book); /* * 用户数据修改 */ @Update("update t_book set name=#{name},price=#{price},remain_num=#{remainNum} where id=#{id}") int updateBook(Book book); /* * 用户数据删除 */ @Delete("delete from t_book where id=#{id}") int deleteBook(int id); /* * 根据用户名称查询用户信息 */ @Select("select id,name,price,remain_num from t_book where name = #{bookName}") Book findByName(@Param("bookName") String bookName); @Select("select id,name,price,remain_num as remainNum from t_book where id = #{bookId}") Book findById(@Param("bookId") int bookId); }
OrderDao.java
package com.bijian.dao; import com.bijian.entity.Order; import org.apache.ibatis.annotations.*; /** * 添加了@Mapper注解之后这个接口在编译时会生成相应的实现类 * 需要注意的是:这个接口中不可以定义同名的方法,因为会生成相同的id * 也就是说这个接口是不支持重载的 */ @Mapper //@Repository public interface OrderDao { /* * 用户下单 */ @Insert("insert into t_order(id,user_id,user_name,book_id,book_name,book_num,book_price) values (#{id},#{userId},#{userName}, #{bookId},#{bookName}, #{bookNum}, #{bookPrice})") int addOrder(Order order); /* * 根据订单ID查询订单信息 */ @Select("select id,user_id as userId,user_name as userName,book_id as bookId,book_name as bookName,book_num as bookNum,book_price as bookPrice from t_order where id = #{orderId}") Order findById(@Param("orderId") int orderId); }
三.entity类
User.java
package com.bijian.entity; public class User { private int id; private String name; private int age; public User() { } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
Book.java
package com.bijian.entity; import java.math.BigDecimal; public class Book { private int id; private String name; private BigDecimal price; private long remainNum; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public BigDecimal getPrice() { return price; } public void setPrice(BigDecimal price) { this.price = price; } public long getRemainNum() { return remainNum; } public void setRemainNum(long remainNum) { this.remainNum = remainNum; } }
Order.java
package com.bijian.entity; import java.math.BigDecimal; public class Order { private int id; private int userId; private String userName; private int bookId; private String bookName; private int bookNum; private BigDecimal bookPrice; public int getId() { return id; } public void setId(int id) { this.id = id; } public int getUserId() { return userId; } public void setUserId(int userId) { this.userId = userId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public int getBookId() { return bookId; } public void setBookId(int bookId) { this.bookId = bookId; } public String getBookName() { return bookName; } public void setBookName(String bookName) { this.bookName = bookName; } public int getBookNum() { return bookNum; } public void setBookNum(int bookNum) { this.bookNum = bookNum; } public BigDecimal getBookPrice() { return bookPrice; } public void setBookPrice(BigDecimal bookPrice) { this.bookPrice = bookPrice; } }
四.服务层
UserService.java
package com.bijian.service; import com.bijian.entity.User; public interface UserService { //新增用户 boolean addUser(User user); //修改用户 boolean updateUser(User user); //删除用户 boolean deleteUser(int id); //根据用户名字查询用户信息 User findUserByName(String userName); //根据用户ID 查询用户信息 User findUserById(int userId); //根据用户年龄查询用户信息 User findUserByAge(int userAge); }
UserServiceImpl.java
package com.bijian.service.impl; import com.bijian.dao.UserDao; import com.bijian.entity.User; import com.bijian.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class UserServiceImpl implements UserService { @Autowired private UserDao userDao; @Override public boolean addUser(User user) { boolean flag=false; try { userDao.addUser(user); flag = true; }catch (Exception e){ e.printStackTrace(); } return flag; } @Override public boolean updateUser(User user) { boolean flag=false; try{ userDao.updateUser(user); flag=true; }catch (Exception e) { e.printStackTrace(); } return flag; } @Override public boolean deleteUser(int id) { boolean flag = false; try{ userDao.deleteUser(id); flag=true; }catch(Exception e){ e.printStackTrace(); } return flag; } @Override public User findUserByName(String userName) { return userDao.findByName(userName); } @Override public User findUserById(int userId) { return userDao.findById(userId); } @Override public User findUserByAge(int userAge) { return userDao.findByAge(userAge); } }
BookService.java
package com.bijian.service; import com.bijian.entity.Book; public interface BookService { boolean addBook(Book book); boolean updateBook(Book book); boolean deleteBook(int id); Book findBookByName(String bookName); Book findBookById(int bookId); }
BookServiceImpl.java
package com.bijian.service.impl; import com.bijian.dao.BookDao; import com.bijian.entity.Book; import com.bijian.service.BookService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class BookServiceImpl implements BookService { @Autowired private BookDao bookDao; @Override public boolean addBook(Book book) { int res = bookDao.addBook(book); if(res == 1) { return true; } return false; } @Override public boolean updateBook(Book book) { int res = bookDao.updateBook(book); if(res == 1) { return true; } return false; } @Override public boolean deleteBook(int id) { int res = bookDao.deleteBook(id); if(res == 1) { return true; } return false; } @Override public Book findBookByName(String bookName) { return bookDao.findByName(bookName); } @Override public Book findBookById(int bookId) { return bookDao.findById(bookId); } }
OrderService.java
package com.bijian.service; import com.bijian.dto.AddOrderRsp; import com.bijian.dto.OrderRsp; import com.bijian.dto.OrderRsp2; import com.bijian.entity.Order; public interface OrderService { AddOrderRsp addOrder(Order order); OrderRsp findOrderById(int orderId); OrderRsp2 findOrderById2(int orderId); }
OrderServiceImpl.java
package com.bijian.service.impl; import com.bijian.dao.OrderDao; import com.bijian.dto.AddOrderRsp; import com.bijian.dto.OrderRsp; import com.bijian.dto.OrderRsp2; import com.bijian.entity.Book; import com.bijian.entity.Order; import com.bijian.entity.User; import com.bijian.enums.ReturnCodeEnum; import com.bijian.service.BookService; import com.bijian.service.OrderService; import com.bijian.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class OrderServiceImpl implements OrderService { @Autowired private OrderDao orderDao; @Autowired private BookService bookService; @Autowired private UserService userService; @Override public AddOrderRsp addOrder(Order order) { AddOrderRsp addOrderRsp = new AddOrderRsp(ReturnCodeEnum.SUCCESS.getCode(), ReturnCodeEnum.SUCCESS.getMsg()); int bookId = order.getBookId(); Book book = bookService.findBookById(bookId); if(book.getRemainNum() < order.getBookNum()) { addOrderRsp.setRetCode(ReturnCodeEnum.FAIL.getCode()); addOrderRsp.setRetMsg("库存少于订单数量"); return addOrderRsp; } order.setBookName(book.getName()); order.setBookPrice(book.getPrice()); int userId = order.getUserId(); User user = userService.findUserById(userId); order.setUserName(user.getName()); int res = orderDao.addOrder(order); if(res == 1) { long remainNum = book.getRemainNum() - order.getBookNum(); book.setRemainNum(remainNum); bookService.updateBook(book); return addOrderRsp; } addOrderRsp.setRetCode(ReturnCodeEnum.FAIL.getCode()); addOrderRsp.setRetMsg("下单失败"); return addOrderRsp; } @Override public OrderRsp findOrderById(int orderId) { OrderRsp orderRsp = new OrderRsp(); System.out.println("orderId:" + orderId); Order order = orderDao.findById(orderId); System.out.println(order.getBookId() + "," + order.getBookName()); orderRsp.setOrder(order); Book book = bookService.findBookById(order.getBookId()); orderRsp.setNowPrice(book.getPrice()); orderRsp.setRemainNum(book.getRemainNum()); return orderRsp; } @Override public OrderRsp2 findOrderById2(int orderId) { OrderRsp2 orderRsp = new OrderRsp2(); Order order = orderDao.findById(orderId); orderRsp.setBookId(order.getBookId()); orderRsp.setBookName(order.getBookName()); orderRsp.setBookNum(order.getBookNum()); orderRsp.setBookPrice(order.getBookPrice()); orderRsp.setId(order.getId()); orderRsp.setUserId(order.getUserId()); orderRsp.setUserName(order.getUserName()); Book book = bookService.findBookById(order.getBookId()); orderRsp.setNowPrice(book.getPrice()); orderRsp.setRemainNum(book.getRemainNum()); return orderRsp; } }
五.控制器层
UserRestController.java
package com.bijian.web; import com.bijian.entity.User; import com.bijian.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping(value="/api/user") public class UserRestController { @Autowired private UserService userService; @RequestMapping(value = "/addUser", method = RequestMethod.POST) public boolean addUser(@RequestBody User user){ System.out.println("开始新增......"); System.out.println(user.getId() + "," + user.getName() + "," + user.getAge()); return userService.addUser(user); } @RequestMapping(value = "/updateUser", method=RequestMethod.PUT) public boolean updateUser(User user){ System.out.println("开始更新......."); return userService.updateUser(user); } @RequestMapping(value = "/deleteUser", method = RequestMethod.DELETE) public boolean delete(@RequestParam(value="userId", required =true) int userId){ System.out.println("开始更新......."); return userService.deleteUser(userId); } @RequestMapping(value="/userName", method=RequestMethod.GET) public User findByUserName(@RequestParam(value = "userName",required = true) String userName){ System.out.println("开始查询..."); return userService.findUserByName(userName); } @RequestMapping(value="/userId", method=RequestMethod.GET) public User findByUserId(@RequestParam(value = "userId",required = true) int userId){ System.out.println("开始查询..."); return userService.findUserById(userId); } @RequestMapping(value="/userAge", method=RequestMethod.GET) public User findByUserAge(@RequestParam(value = "userAge",required = true) String userAge){ System.out.println("开始查询..."); return userService.findUserByName(userAge); } }
BookRestController.java
package com.bijian.web; import com.bijian.entity.Book; import com.bijian.service.BookService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping(value="/api/book") public class BookRestController { @Autowired private BookService bookService; @RequestMapping(value = "/addBook", method = RequestMethod.POST) public boolean addUser(@RequestBody Book book){ System.out.println("开始新增......"); System.out.println(book.getId() + "," + book.getName() + "," + book.getPrice() + "," + book.getRemainNum()); return bookService.addBook(book); } @RequestMapping(value = "/updateBook", method=RequestMethod.PUT) public boolean updateBook(Book book){ System.out.println("开始更新......."); return bookService.updateBook(book); } @RequestMapping(value = "/deleteBook", method = RequestMethod.DELETE) public boolean delete(@RequestParam(value="bookId", required =true) int bookId){ System.out.println("开始更新......."); return bookService.deleteBook(bookId); } @RequestMapping(value="/bookName", method=RequestMethod.GET) public Book findByBookName(@RequestParam(value = "bookName",required = true) String bookName){ System.out.println("开始查询..."); return bookService.findBookByName(bookName); } }
OrderRestController.java
package com.bijian.web; import com.bijian.dto.AddOrderRsp; import com.bijian.dto.OrderRsp; import com.bijian.dto.OrderRsp2; import com.bijian.entity.Order; import com.bijian.service.OrderService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping(value="/api/order") public class OrderRestController { @Autowired private OrderService orderService; @RequestMapping(value = "/addOrder", method = RequestMethod.POST) public AddOrderRsp addOrder(@RequestBody Order order){ System.out.println("开始新增......"); System.out.println(order.getId() + "," + order.getUserId() + "," + order.getBookId() + "," + order.getBookNum()); return orderService.addOrder(order); } @RequestMapping(value="/orderId", method=RequestMethod.GET) public OrderRsp findByOrderId(@RequestParam(value = "orderId",required = true) int orderId){ System.out.println("开始查询..." + orderId); return orderService.findOrderById(orderId); } @RequestMapping(value="/orderId2", method=RequestMethod.GET) public OrderRsp2 findByOrderId2(@RequestParam(value = "orderId",required = true) int orderId){ System.out.println("开始查询..." + orderId); return orderService.findOrderById2(orderId); } }
六.DTO
AddOrderRsp.java
package com.bijian.dto; public class AddOrderRsp { private String retCode; private String retMsg; public AddOrderRsp(String retCode, String retMsg) { this.retCode = retCode; this.retMsg = retMsg; } public String getRetMsg() { return retMsg; } public void setRetMsg(String retMsg) { this.retMsg = retMsg; } public String getRetCode() { return retCode; } public void setRetCode(String retCode) { this.retCode = retCode; } }
OrderRsp.java
package com.bijian.dto; import com.bijian.entity.Order; import java.math.BigDecimal; public class OrderRsp { private Order order; private long remainNum; private BigDecimal nowPrice; public Order getOrder() { return order; } public void setOrder(Order order) { this.order = order; } public long getRemainNum() { return remainNum; } public void setRemainNum(long remainNum) { this.remainNum = remainNum; } public BigDecimal getNowPrice() { return nowPrice; } public void setNowPrice(BigDecimal nowPrice) { this.nowPrice = nowPrice; } }
OrderRsp2.java
package com.bijian.dto; import com.bijian.entity.Order; import java.math.BigDecimal; public class OrderRsp2 extends Order { private long remainNum; private BigDecimal nowPrice; public long getRemainNum() { return remainNum; } public void setRemainNum(long remainNum) { this.remainNum = remainNum; } public BigDecimal getNowPrice() { return nowPrice; } public void setNowPrice(BigDecimal nowPrice) { this.nowPrice = nowPrice; } }
七.枚举类
ReturnCodeEnum.java
package com.bijian.enums; public enum ReturnCodeEnum { SUCCESS("0", "处理成功"), FAIL("1", "处理失败"); private String code; private String msg; ReturnCodeEnum(String code, String msg){ this.code = code; this.msg = msg; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } }
八.服务启动类
UserSpringbootGradeDemoApplication.java
package com.bijian; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class UserSpringbootGradeDemoApplication { public static void main(String[] args) { SpringApplication.run(UserSpringbootGradeDemoApplication.class, args); } }
九.项目配置文件
application.properties
## 数据源配置 spring.datasource.url=jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=utf8 spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.jdbc.Driver ## Mybatis 配置 # 配置为 com.pancm.bean 指向实体类包路径。 mybatis.typeAliasesPackage=com.bijian.entity
十.gradle配置文件
build.gradle
buildscript { ext { springBootVersion = '2.1.1.RELEASE' } repositories { mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") } } apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'org.springframework.boot' apply plugin: 'io.spring.dependency-management' group = 'com.user.springboot' version = '0.0.1-SNAPSHOT' sourceCompatibility = 1.8 repositories { mavenCentral() } dependencies { implementation('org.springframework.boot:spring-boot-starter-web') implementation('org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.2') implementation('mysql:mysql-connector-java:5.1.46') runtimeOnly('org.springframework.boot:spring-boot-devtools') runtimeOnly('mysql:mysql-connector-java:5.1.46') testImplementation('org.springframework.boot:spring-boot-starter-test') testImplementation('junit:junit:4.12') testImplementation('org.mockito:mockito-all:1.10.19') }
十一.启动UserSpringbootGradeDemoApplication,运行项目
1.新增用户
查看t_user表,内容如下:

用postman工具测试新增用户如下:

再次查看t_user表,name为bijian的用户新增成功。

2.新增书籍
查看t_book表,内容如下:

用postman工具测试新增书籍如下:

再次查看t_book表,name为Linux的书新增成功。

3.新增订单
查看订单表,内容如下:

用postman工具测试下单如下:

再次查看t_order表,新增订单信息如下:

接口查询订单信息如下:

其它功能测试就不再一一测试了。整个项目工程代码详见《SpringBoot小项目实例》。
posted on 2019-01-06 23:32 bijian1013 阅读(434) 评论(0) 收藏 举报
浙公网安备 33010602011771号