SpringBoot的增删改查、分页(Book书籍管理)

数据库sql:

create database bookmis;
​
use bookmis;
​
SET FOREIGN_KEY_CHECKS=0;
 
 --编号,书名,价格,出版日期,作者
 --商品信息表
CREATE TABLE `book` (
    `bid` INT(20) NOT NULL AUTO_INCREMENT COMMENT '主键编号',
    `bookname` varchar(30) COLLATE utf8_bin NOT NULL COMMENT '书名',
    `price` decimal(10,2) COLLATE utf8_bin NOT NULL COMMENT '价格',
    `publicdate` DATE  NOT NULL COMMENT '出版日期',
    `author` varchar(30) COLLATE utf8_bin NOT NULL COMMENT '作者',
    PRIMARY KEY (`bid`)
)AUTO_INCREMENT=1001 DEFAULT CHARSET=utf8;

​
INSERT INTO `book`(`bookname`,`price`,`publicdate`,`author`)
 VALUES('红楼梦','68.00','1993-03-21','曹雪芹');
INSERT INTO `book`(`bookname`,`price`,`publicdate`,`author`)
 VALUES('老人与海','58.00','2008-06-25','海明威');
 INSERT INTO `book`(`bookname`,`price`,`publicdate`,`author`)
 VALUES('活着','55.00','2005-05-15','余华');
INSERT INTO `book`(`bookname`,`price`,`publicdate`,`author`)
 VALUES('永别了,武器','89.00','2003-07-14','海明威');
INSERT INTO `book`(`bookname`,`price`,`publicdate`,`author`)
 VALUES(' 太阳照样升起','67.90','1996-06-11','海明威');
 INSERT INTO `book`(`bookname`,`price`,`publicdate`,`author`)
 VALUES('人间告白','66.00','2009-11-21','金鱼酱');
 INSERT INTO `book`(`bookname`,`price`,`publicdate`,`author`)
 VALUES('简爱','58.00','2000-12-11','勃朗特');
SELECT * from `book`; --查询表
DROP  TABLE `book`; --删除表

一、pom.xml添加分页依赖

 <!-- 分页 -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.4.7</version>
        </dependency>

二、在application.yaml添加配置

spring:
  datasource:
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/bookmis?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false&allowPublicKeyRetrieval=true
mybatis:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  type-aliases-package: com.nf.dityss.entity
  mapper-locations: classpath:/mappers/*.xml

三、在entity包写实体类

@NoArgsConstructor
@AllArgsConstructor
@Data
public class Book {
    private Integer bid;// INT(20) NOT NULL AUTO_INCREMENT COMMENT '主键编号',
    private String bookname;// varchar(30) COLLATE utf8_bin NOT NULL COMMENT '书名',
    private BigDecimal price;// decimal(10,2) COLLATE utf8_bin NOT NULL COMMENT '价格',
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
    private Date publicdate;// DATE  NOT NULL COMMENT '出版日期',
    private String author;// varchar(30) COLLATE utf8_bin NOT NULL COMMENT '作者',
​
}

四、mapper包

@Mapper
public interface BookMapper {
    /**查询 显示所有图书信息 */
    public List<Book> getBook(Book book);
    /**删除*/
    public int deletebookById(String bid);
    /** 添加学生 */
    public int BookAdd(Book book);
    /** 单条查询学生 */
    public Book getBookId(String bid);
    /** 修改学生 */
    public Boolean updateBook(Book book);
    /** 多条件模糊查询 学生 */
    public List<Book> getBookbyId(Book book);
    /** 批量删除 */
    public Boolean bookDelete(@Param("ids") String ids[]);
    /** 获取学生并分页 */
    public List<Book> selectPager();
}

五、service包

public interface BookService {
    /**查询 显示所有图书信息 */
    public List<Book> getBook(Book book);
    /**删除*/
    public int deletebookById(String bid);
    /** 添加学生 */
    public int BookAdd(Book book);
    /** 单条查询学生 */
    public Book getBookId(String bid);
    /** 修改学生 */
    public Boolean updateBook(Book book);
    /** 多条件模糊查询 学生 */
    public List<Book> getBookbyId(Book book);
​
    /** 批量删除 */
    public Boolean bookDelete(@Param("ids") String ids[]);
​
    /** 获取学生并分页 */
    public PageResult selectPager(int pageNum, int pageSize, Book book);
​
}

六、service包 --> impl包

@Service
public class BookServiceImpl implements BookService {
    @Autowired
    BookMapper bookMapper;
​
    @Override
    public List<Book> getBook(Book book) {
        return bookMapper.getBook(book);
    }
​
    @Override
    public int deletebookById(String bid) {
        return bookMapper.deletebookById(bid);
    }
​
    @Override
    public int BookAdd(Book book) {
        return bookMapper.BookAdd(book);
    }
​
    @Override
    public Book getBookId(String bid) {
        return bookMapper.getBookId(bid);
    }
​
    @Override
    public Boolean updateBook(Book book) {
        return bookMapper.updateBook(book);
    }
​
    @Override
    public List<Book> getBookbyId(Book book) {
        return bookMapper.getBookbyId(book);
    }
​
    @Override
    public Boolean bookDelete(String[] ids) {
        return bookMapper.bookDelete(ids);
    }
​
    @Override
    public PageResult selectPager(int pageNum, int pageSize,Book book) {
        //开始分页,指定第几页,每页多少记录
        PageHelper.startPage(pageNum,pageSize);
        //查询学生列表
        List<Book> books = bookMapper.getBook(book);
        //返回分页对象
        return PageResult.getPageResult(new PageInfo<Book>(books));
    }

七、config包

跨域请求:

@Configuration
public class GlobalCorsConfig {
    @Bean
    public CorsFilter corsFilter() {
        //1. 添加 CORS配置信息
        CorsConfiguration config = new CorsConfiguration();
        //放行哪些原始域
        config.addAllowedOrigin("http://localhost:8081/");
        config.addAllowedOrigin("http://localhost:5173/");
        config.addAllowedOrigin("http://127.0.0.1:5501/");
        config.addAllowedOrigin("http://localhost:63342/");
        //是否发送 Cookie
        config.setAllowCredentials(true);
        //放行哪些请求方式
        config.addAllowedMethod("*");
        //放行哪些原始请求头部信息
        config.addAllowedHeader("*");
        //暴露哪些头部信息
        config.addExposedHeader("*");
        //2. 添加映射路径
        UrlBasedCorsConfigurationSource corsConfigurationSource = new UrlBasedCorsConfigurationSource();
        corsConfigurationSource.registerCorsConfiguration("/**",config);
        //3. 返回新的CorsFilter
        return new CorsFilter(corsConfigurationSource);
    }
}

分页请求:

/**
 * 分页请求
 */
public class PageRequest {
    /**
     * 当前页码
     */
    private int pageNum;
    /**
     * 每页数量
     */
    private int pageSize;
​
    public int getPageNum() {
        return pageNum;
    }
​
    public void setPageNum(int pageNum) {
        this.pageNum = pageNum;
    }
​
    public int getPageSize() {
        return pageSize;
    }
​
    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }
}

分页信息:

public class PageResult {
    /**
     * 当前页码
     */
    private int pageNum;
    /**
     * 每页数量
     */
    private int pageSize;
    /**
     * 记录总数
     */
    private long pageTotal;
    /**
     * 页码总数
     */
    private int totalPages;
    /**
     * 数据模型
     */
    private List<?> list;
​
    public int getPageNum() {
        return pageNum;
    }
​
    public void setPageNum(int pageNum) {
        this.pageNum = pageNum;
    }
​
    public int getPageSize() {
        return pageSize;
    }
​
    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }
​
    public long getPageTotal() {
        return pageTotal;
    }
​
    public void setPageTotal(long pageTotal) {
        this.pageTotal = pageTotal;
    }
​
    public int getTotalPages() {
        return totalPages;
    }
​
    public void setTotalPages(int totalPages) {
        this.totalPages = totalPages;
    }
​
    public List<?> getList() {
        return list;
    }
​
    public void setList(List<?> list) {
        this.list = list;
    }
    /**
     * 将分页信息封装到统一的接口
     * @return
     */
    public static PageResult getPageResult(PageInfo<?> pageInfo) {
        PageResult pageResult = new PageResult();
        pageResult.setPageNum(pageInfo.getPageNum());
        pageResult.setPageSize(pageInfo.getPageSize());
        pageResult.setPageTotal(pageInfo.getTotal());
        pageResult.setTotalPages(pageInfo.getPages());
        pageResult.setList(pageInfo.getList());
        return pageResult;
    }

八、Controller控制层

@RestController
@RequestMapping("/api/book")
public class BookController {
    @Autowired
    BookService bookService;
​
    @PostMapping("/findAll")
    public List<Book> getBook(@RequestBody Book book){
        return bookService.getBook(book);
    }
    @DeleteMapping("/deleteBookById")
    public int deletebookById(String bid){
        return bookService.deletebookById(bid);
    }
​
    @PostMapping("/bookAdd")
    public int BookAdd(@RequestBody Book book){
        return bookService.BookAdd(book);
    }
​
    @GetMapping("/getBookId")
    public Book getBookId(String bid){
        System.out.println("查询信息"+bid);
        return bookService.getBookId(bid);
    }
    @PostMapping("/updateBook")
    public Boolean updateBook(@RequestBody Book book){
        System.out.println("修改信息"+book);
        return bookService.updateBook(book);
    }
    @PostMapping("/getBookbyId")
    public List<Book> getBookbyId(@RequestBody Book book){
        System.out.println("查询信息"+book);
        return bookService.getBookbyId(book);
    }
    @PostMapping("/bookDelete")
    public Boolean bookDelete(@RequestBody String ids[]){
        return bookService.bookDelete(ids);
    }
​
    @GetMapping("/pager")
    public PageResult selectPager(@RequestParam(name="pageNum",required = false,defaultValue = "1") int pageNum,
                                  @RequestParam(name="pageSize",required = false,defaultValue = "2")int pageSize,
​
                                  @RequestParam(required = false,defaultValue = "") Integer bid,
                                  @RequestParam(required = false,defaultValue = "") String bookname,
                                  @RequestParam(required = false,defaultValue = "") BigDecimal price,
                                  @RequestParam(required = false,defaultValue = "") Date publicdate,
                                  @RequestParam(required = false,defaultValue = "") String author
    ){
        //获取所有学生信息
        Book book = new Book();
        book.setBid(bid);
        book.setBookname(bookname);
        book.setPrice(BigDecimal.valueOf(Long.parseLong(String.valueOf(price))));
        book.setPublicdate(publicdate);
//        book.setAuthor(author);
        if(!author.equals("")){
            book.setAuthor(String.valueOf(DateUtil.parse(author,"yyyy-MM-dd")));
        }
​
//        List<Student> allDitys = studentService.getStudent(student);
​
        return bookService.selectPager(pageNum,pageSize,book);
    }
}

九、BookMapper.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nf.dityss.mapper.BookMapper">
​
    <resultMap id="BookMap" type="Book">
        <result property="bid" column="bid"></result>
        <result property="bookname" column="bookname"></result>
        <result property="price" column="price"></result>
        <result property="publicdate" column="publicdate"></result>
        <result property="author" column="author"></result>
    </resultMap>
​
    <select id="getBook" resultMap="BookMap">
        select * from book
        <where>
            <if test="bid!=null and bid!=''">
                and book.bid like concat('%',concat(#{bid},'%'))
            </if>
​
            <if test="bookname!=null and bookname!=''">
                and book.bookname like concat('%',concat(#{bookname},'%'))
            </if>
​
            <if test="price!=null and price!=''">
                and book.price like concat('%',concat(#{price},'%'))
            </if>
​
            <if test="publicdate!=null">
                and book.publicdate=#{publicdate}
            </if>
​
            <if test="author!=null and author!=''">
                and book.author like concat('%',concat(#{author},'%'))
            </if>
        </where>
    </select>
​
    <delete id="deletebookById">
        delete from book where bid=#{bid}
    </delete>
​
    <insert id="BookAdd">
        insert into book(book.bookname,
                         book.price,
                         book.publicdate,
                         book.author)
        values(#{bookname},#{price},#{publicdate},#{author})
    </insert>
​
    <select id="getBookId" resultMap="BookMap">
        select * from book where bid =#{bid}
    </select>
​
    <update id="updateBook">
        update book set
                        book.bid=#{bid},
                        book.bookname=#{bookname},
                        book.price=#{price},
                        book.publicdate=#{publicdate},
                        book.author=#{author}
        where bid=#{bid}
    </update>
​
    <select id="getBookbyId" resultMap="BookMap">
        select * from book
​
<!--        <trim prefix="WHERE" prefixOverrides="AND|OR">-->
<!--            <if test="bid !=null">-->
<!--                and bid=#{bid}-->
<!--            </if>-->
<!--            <if test="bookname !=null">-->
<!--                bookname Like CONCAT(#{bookname},'%')-->
<!--            </if>-->
<!--            <if test="publicdate !=null">-->
<!--                and publicdate=#{publicdate}-->
<!--                and publicdate=#{publicdate}-->
<!--                and publicdate=#{publicdate}-->
<!--            </if>-->
<!--            <if test="author !=null">-->
<!--                and author=#{author}-->
<!--            </if>-->
​
<!--        </trim>-->
    </select>
​
    <delete id="bookDelete">
        delete from book where bid in
        <foreach collection="ids" item="bid" open="(" close=")" separator=",">
            #{bid}
        </foreach>
    </delete>
​
    <!--    分页-->
    <select id="selectPager" resultMap="BookMap">
        SELECT
            book.bid,
            book.bookname,
            book.price,
            book.publicdate,
            book.author
        FROM
            book
    </select>
</mapper>

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Idea SpringBoot是一个基于SpringBoot框架的开发工具,可以用来进行增删操作。通过使用Idea SpringBoot,开发者可以快速地创建一个基于SpringBoot的Web应用程序,并且可以使用其提供的各种功能来实现数据的增删操作。这些操作可以通过使用SpringBoot的注解和API来实现,例如使用@RequestBody注解来接收请求体中的数据,使用@PathVariable注解来获取路径参数,使用@PutMapping注解来处理PUT请求等等。总之,Idea SpringBoot是一个非常强大的工具,可以帮助开发者快速地实现增删操作。 ### 回答2: Spring Boot是一个快速开发JAVA应用程序的框架。它允许我们在没有太多配置的情况下快速启动和构建应用程序。在Spring Boot中,Idea作为开发工具与Spring Boot的结合,可以帮助我们轻松地进行增删操作。 首先,我们需要在pom.xml文件中添加Spring Boot的相应依赖,以便在我们的项目中集成Spring Boot。当然,我们也可以选择使用Idea自带的Spring Boot Initializr来创建一个Spring Boot项目。 接下来,我们需要创建实体类和数据库表之间的映射关系,这可以使用JPA实现。在Idea中,我们可以使用Spring Initializr创建项目时勾选JPA并导入相关依赖。 增加操作是指我们将数据插入到相应的数据表中。在Spring Boot中,我们可以使用@Repository注解将数据保存到数据库中。在Idea中,我们可以使用Spring Data JPA实现增加操作。使用@Entity和@Table注解可以定义实体类和对应数据表之间的映射关系,在操作该实体时,只需要调用对应的方法即可。 删除操作涉及到从数据库中删除指定实体的数据。我们可以使用Spring Data JPA中定义好的delete()方法或者自定义的deleteByXXX()方法来实现删除操作。在Idea中,我们可以使用@Repository注解,定义对应的删除方法,并在Service层进行调用。 更新操作对应着更新数据库中的实体数据。在Spring Boot中,我们可以使用Spring Data JPA中定义好的save()方法或者自定义的update()方法实现更新操作。在Idea中,我们需要先获取当前实体的对象,然后更新相应的属性。 询操作是对数据库数据的读取操作,Spring Boot提供了通过Spring Data JPA进行数据库询的方法。在Idea中,我们可以结合Spring Data JPA中的各种询注解实现对数据的询。 总之,使用Idea和Spring Boot搭建项目并实现增删操作非常简单。通过Idea的自动化提示和Spring Boot的简化开发,我们可以更高效地进行Java开发。 ### 回答3: SpringBoot是一款基于Spring框架的轻量级开发框架,它极大地简化了Java web应用程序的开发过程,使得开发人员可以更加快速、高效地开发出高质量的应用程序。对于数据库的增删操作,在SpringBoot中同样也有着非常便捷的方法。 首先,在SpringBoot中,我们需要引入Spring Data JPA和相关的依赖库,例如mysql-connector-java。然后,我们在实体类上添加注解@Entity、@Table、@Id等,表示对应表的实体类型、表名和主键。接着,在接口中使用注解@Query定义询语句,同时继承JpaRepository,就可以快速完成与数据库的增删操作。 下面对增删几个方面来进行具体说明: 1. 添加数据:在SpringBoot中,添加数据使用save()方法,将实体对象放入参数中即可。例如: ```java UserRepository.save(User) ``` 其中UserRepository表示定义的JpaRepository实体接口,User表示要添加到数据库的实体对象。 2. 删除数据:删除数据同样也非常简单,直接使用delete()方法即可。例如: ```java UserRepository.delete(User) ``` 其中UserRepository表示定义的JpaRepository实体接口,User表示要从数据库中删除的实体对象。 3. 更新数据:更新数据同样使用save()方法,只需要将实体对象中的属性进行修,再将对象使用save()方法更新回数据库即可。例如: ```java User User = UserRepository.findById(id); User.setName("小明"); User.setAge(18); UserRepository.save(User); ``` 4. 询数据:询数据同样也很简单,直接使用定义好的方法即可。例如: ```java UserRepository.findById(id); UserRepository.findAll(); ``` 其中UserRepository表示定义的JpaRepository实体接口,findById()方法表示根据id询数据,findAll()方法表示询所有数据。 综上所述,使用SpringBoot进行增删操作非常简单,只需要引入相关的依赖库、添加实体注解、定义询语句和继承JpaRepository接口即可。所以,SpringBoot是非常适合快速开发web应用程序的框架。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值