《关于我我独自学习springboot这件事》之最简单的项目--简单的图书管理系统

记录一下完整的创建过程

一、创建项目

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);
    }

}

到这里就完成了对用户数据的基本操作~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值