记录一下完整的创建过程
一、创建项目
1.点击New project
可以修改一下本地的maven仓库(修改过的可以跳过)
2.修改pom文件,搭建父工程
在父工程的pom文件中添加
<packaging>pom</packaging>
同时删除src文件夹
3.新建子工程
右键父工程,点击new module
注意事项:选择spring initializr type选择Maven Package name前缀与前面的父工程最好相对应
jdk版本一定要与Java版本相同!!
spring boot版本选择3.4.4 同时选上如图所示的三个插件
创建好之后将这些暂时用不到的文件删除即可
4.配置数据源
根据自己的数据库配置相应的信息,如本次使用的数据库是studb就要在url中对应好
spring.datasource.url=jdbc:mysql://localhost:3306/studb?useSSL=false spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.username=root spring.datasource.password=123456
二、准备数据库
在数据库studb中创建两个表book和shop
三、测试连接
在自动生成的测试类中,首先自动装配@Autowired DataSource dataSource; 然后运行一下
结果如下所示:
此时数据库就自动装配好啦!!现在可以构建简单的实现类了
四、方法实现
1.任务目标
1.按照id查询图书
2.新增一个图书
3.按照id修改图书库存
4.按照id删除图书
5.按照username扣减账户余额
6.编写用户购买图书完整的业务流程(service层调用dao层方法)
(service层接口抽象方法checkout(String username,int bookid,int booknum)
2.具体实现
1.首先根据题目要求创建对应的pojo类
@Data public class Book { private Integer bId; private String bName; private float price; private Integer store; }
@Data public class User { private Integer userId; private String name; private float balance; }
2.根据题目前四条要求根据图书进行增删改查
下面是Bookdao的实现方法
@Component public class BookDao { @Autowired JdbcTemplate jdbcTemplate; public void addBook(Book book){ String sql="insert into book(b_name,price,store)values (?,?,?)"; jdbcTemplate.update(sql,book.getBName(),book.getPrice(),book.getStore()); } public void deleteBook(Integer id){ String sql="delete from book where b_id=?"; jdbcTemplate.update(sql,id); } public void motifyBook(Integer id,String name,float price,Integer store){ String sql="update book set b_name=?,price=?,store=? where b_id=?"; jdbcTemplate.update(sql,name,price,store,id); } public Book getBookbyId(Integer sid){ String sql="select * from book where b_id=?"; Book book = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(Book.class),sid); return book; } }
3.根据题目5按照username扣减账户余额
@Component public class UserDao { @Autowired JdbcTemplate jdbcTemplate; private String username; /** * 根据username查询用户信息,并且修改当前的balance * @param username * @return */ public void getUserbyName(String username,float price) { String sql = "select * from user where name=?"; User user = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(User.class), username); String sql2 = "update user set balance=? where name=?"; jdbcTemplate.update(sql2, user.getBalance() - price, username); } }
4.编写用户购买图书完整的业务流程(service层调用dao层方法)
(service层接口抽象方法checkout(String username,int bookid,int booknum)
创建Shopservice接口
public interface ShopService { void checkout(String username,Integer bookid,Integer booknum); }
编写service具体实现类@Component @Transactional public class ShopServiceImpI implements ShopService{ @Autowired BookDao bookDao; @Autowired UserDao userDao; @Override public void checkout(String username, Integer bookid, Integer booknum) { Book book = bookDao.getBookbyId(bookid); float price=book.getPrice()*booknum; userDao.getUserbyName(username,price); } }
5.测试代码
@SpringBootTest class BookDemoApplicationTests { @Autowired DataSource dataSource; @Autowired BookDao bookDao; @Autowired UserDao userDao; @Autowired ShopService shopService; @Test void contextLoads() { System.out.println(dataSource.getClass()); System.out.println(dataSource); } @Test void Bookadd(){ Book book = new Book(); book.setBName("三国杀"); book.setPrice(648); book.setStore(1); bookDao.addBook(book); } @Test void Bookdelete(){ bookDao.deleteBook(2); } @Test void motifyBook(){ bookDao.motifyBook(3,"水浒传",198,2); } @Test void queryTest(){ System.out.println(bookDao.getBookbyId(1)); } @Test void balance(){ userDao.getUserbyName("张三",198); } @Test void Shop(){ shopService.checkout("张三",1,2); } }
到这里就完成了对用户数据的基本操作~