SpringBoot+vue+jpa+mysql前后台分离实现增删改查分页和三级联动(附源码)(二)

先从demo-server开始

后台目录结构:
在这里插入图片描述
在这里插入图片描述

在entity目录下新建四个实体类:
其命名分别为:Book,Province,City,Town
Book.java的内容如下:(对应数据库的book表)


```java

```java
package com.example.entity;

import lombok.Data;
import javax.persistence.Entity;
import javax.persistence.Id;

@Data
@Entity
public class Book {

    @Id
    private Integer id;

    private String name;

    private String author;
}

Province.java的内容如下:(对应数据库的province表)


```java
package com.example.entity;

import lombok.Data;
import javax.persistence.*;
/**
 * 三级联动 省份
 * */
@Data
@Entity
@Table(name = "province")
public class Province {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id",unique = true,nullable = false)
    private  Integer id;

    @Column(name = "code",nullable = false)
    private String code;

    @Column(name = "name",nullable = false)
    private String name;
}

City.java的内容如下:(对应数据库的city表)

package com.example.entity;

import lombok.Data;

import javax.persistence.*;
/**
 * 三级联动 市区
 * */
@Data
@Entity
@Table(name = "city")
public class City {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id",unique = true,nullable = false)
    private  Integer id;

    @Column(name = "code",nullable = false)
    private String code;

    @Column(name = "name",nullable = false)
    private String name;

    @Column(name = "province_code",nullable = false)
    private String provinceCode;
}

Town.java的内容如下:(对应数据库的town表)

package com.example.entity;

import lombok.Data;
import javax.persistence.*;
/**
 * 三级联动 区域
 * */
@Data
@Entity
@Table(name ="town")
public class Town {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id",unique = true,nullable = false)
    private  Integer id;

    @Column(name = "code",nullable = false)
    private String code;

    @Column(name = "name",nullable = false)
    private String name;

    @Column(name = "city_code",nullable = false)
    private String cityCode;
}

dao目录下新建文件BookDAO,Book01DAO,ProvinceDAO,CityDAO,TownCity
BookDAO的内容如下:

package com.example.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.entity.Book;
import org.apache.ibatis.annotations.Mapper;


@Mapper
public interface BookDAO extends BaseMapper<Book> {
}

Book01DAO的内容如下:

package com.example.dao;

import com.example.entity.Book;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;

@Repository
public interface Book01DAO extends JpaRepository<Book,Integer> {

    @Query(value = "select * from book where name like %?1%",nativeQuery = true)
    Page<Book> findNameLike(String name, PageRequest pageRequest);
}

ProvinceDAO的内容如下:

package com.example.dao;

import com.example.entity.Province;
import org.springframework.data.jpa.repository.JpaRepository;

public interface ProvinceDAO extends JpaRepository<Province,Integer> {
}

CityDAO的内容如下:

package com.example.dao;

import com.example.entity.City;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;

public interface CityDAO extends JpaRepository<City,Integer> {
    /**
     * 实现jpa的基本方法,根据省份编号查询城市信息
     */
    public List<City> findCityByProvinceCode(String provinceCode);
}

TownDAO的内容如下:

package com.example.dao;

import com.example.entity.Town;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;

public interface TownDAO extends JpaRepository<Town,Integer> {
    /**
     * 实现jpa基本方法,根据城市编号查询区域信息
     */
    public List<Town> findTownByCityCode(String cityCode);
}

service包下新建BookService,Book01Service,ProvinceService,CityService,TownService
BookService的内容如下:

package com.example.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.entity.Book;
import org.springframework.data.domain.Page;

public interface BookService extends IService<Book> {
    boolean saveBook(Book book);

    boolean modify(Book book);

    boolean delete(Integer id);

    Book selectById(Integer id);

    IPage<Book> getPage(int currentPage, int pageSize, Book book);

}

Book01Service的内容如下:

package com.example.service;

import com.example.entity.Book;
import org.springframework.data.domain.Page;

public interface Book01Service {

    Page<Book> findPage(Integer currentPage, Integer pageSize, String name);
}

ProvinceService的内容如下:

package com.example.service;

import com.example.entity.Province;

import java.util.List;

public interface ProvinceService {

    List<Province> findAll();
}

CityService的内容如下:

package com.example.service;

import com.example.entity.City;

import java.util.List;

public interface CityService {

    List<City> findByProvinceCode(String provinceCode);
}

TownService的内容如下:

package com.example.service;

import com.example.entity.Town;

import java.util.List;

public interface TownService {
    List<Town> findByCityCode(String cityCode);
}

在impl包里面实现service包下面接口的方法:
新建:BookServiceImpl,Book01ServiceImpl,ProvinceServiceImpl,TownServiceImpl,CityServiceImpl其内容:
BookServiceImpl:

package com.example.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.dao.BookDAO;
import com.example.entity.Book;
import com.example.service.BookService;
import org.apache.logging.log4j.util.Strings;
import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
@Service
public class BookServiceImpl extends ServiceImpl<BookDAO,Book> implements BookService {

    @Resource
    private BookDAO bookDAO;

    @Override
    public boolean saveBook(Book book) {
        return bookDAO.insert(book)>0;
    }

    @Override
    public boolean modify(Book book) {
        return bookDAO.updateById(book)>0;
    }

    @Override
    public boolean delete(Integer id) {
        return bookDAO.deleteById(id)>0;
    }

    @Override
    public Book selectById(Integer id) {
        return bookDAO.selectById(id);
    }

    /**
     * 分页、条件查询
     * */
    @Override
    public IPage<Book> getPage(int currentPage, int pageSize, Book book) {
        LambdaQueryWrapper<Book> lqw = new LambdaQueryWrapper<Book>();

        lqw.like(Strings.isNotEmpty(book.getName()),Book::getName,book.getName());
        lqw.like(Strings.isNotEmpty(book.getAuthor()),Book::getAuthor,book.getAuthor());

        IPage page = new Page(currentPage,pageSize);
        bookDAO.selectPage(page,lqw);
        return page;
    }

}

Book01ServiceImpl:

package com.example.service.impl;

import com.example.dao.Book01DAO;
import com.example.entity.Book;
import com.example.service.Book01Service;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

@Service
public class Book01ServiceImpl implements Book01Service {

    @Resource
    private Book01DAO book01DAO;
    /**
     * 模糊查询 分页功能
     * */
    public Page<Book> findPage(Integer currentPage,Integer pageSize,String name){
        Sort sort=Sort.by(Sort.Direction.ASC,"id");  //根据时间倒序排序
        PageRequest pageRequest= PageRequest.of(currentPage-1,pageSize,sort);
        return book01DAO.findNameLike(name,pageRequest);
    }
}

ProvinceServiceImpl:

package com.example.service.impl;

import com.example.dao.ProvinceDAO;
import com.example.entity.Province;
import com.example.service.ProvinceService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.List;
@Service
@Transactional
public class ProvinceServiceImpl implements ProvinceService {

    @Resource
    private ProvinceDAO provinceDAO;

    @Override
    public List<Province> findAll() {
        return provinceDAO.findAll();
    }
}

CityServiceImpl:

package com.example.service.impl;

import com.example.dao.CityDAO;
import com.example.entity.City;
import com.example.service.CityService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.List;
@Service
@Transactional
public class CityServiceImpl implements CityService {
    @Resource
    private CityDAO cityDAO;

    @Override
    public List<City> findByProvinceCode(String provinceCode) {
        return cityDAO.findCityByProvinceCode(provinceCode);
    }
}

TownServiceImpl:

package com.example.service.impl;

import com.example.dao.TownDAO;
import com.example.entity.Town;
import com.example.service.TownService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.List;
@Service
@Transactional
public class TownServiceImpl implements TownService {

    @Resource
    private TownDAO townDAO;

    @Override
    public List<Town> findByCityCode(String cityCode) {
        return townDAO.findTownByCityCode(cityCode);
    }
}

接下来是controller里面实现和前台的对接:
新建BookController.java其内容:

package com.example.controller;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.example.entity.Book;
import com.example.service.Book01Service;
import com.example.service.BookService;
import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

@RestController
@RequestMapping("/book")
@CrossOrigin
public class BookController {

    @Resource
    private BookService bookService;

    @Resource
    private Book01Service book01Service;

    /**
     *新增
     * */
    @PostMapping("/add")
    public Boolean save(@RequestBody Book book){
        boolean flag= bookService.saveBook(book);
        if(flag){
            return true;
        }else{
            return false;
        }
    }

    /**
     * 修改
     * */
    @PutMapping("/update")
    public Boolean update(@RequestBody Book book){
        boolean flag= bookService.modify(book);
        if(flag){
            return true;
        }else{
            return false;
        }
    }

    /**
     * 删除
     * */
    @DeleteMapping("/delete/{id}")
    public Boolean delete(@PathVariable Integer id){
        boolean flag= bookService.delete(id);
        if(flag){
            return true;
        }else{
            return false;
        }
    }

    /**
     * 查询全部
     * */
    @GetMapping
    public List<Book> getAll(){
        return bookService.list();
    }

    /**
     * 根据ID查询
     * */
    @GetMapping("/{id}")
    public Book getById(@PathVariable Integer id){
        return bookService.selectById(id);
    }

    /**
     * 条件查询 分页查询
     * */
    @GetMapping("/{currentPage}/{pageSize}")
    public IPage<Book> getPage(@PathVariable int currentPage,@PathVariable int pageSize,Book book){
        IPage<Book> page=bookService.getPage(currentPage,pageSize,book);

        //
        if(currentPage>page.getPages()){
            page=bookService.getPage((int)page.getPages(),pageSize,book);
        }
        return page;
    }

    /**
     * 分页模糊查询
     * */
    @GetMapping("/page")
    public Page<Book> findPage(@RequestParam(defaultValue = "1")Integer currentPage,
                                       @RequestParam(defaultValue = "2")Integer pageSize,
                                       @RequestParam(required = false) String name){
        return book01Service.findPage(currentPage, pageSize, name);
    }

}

新建AddressController.java其内容:

package com.example.controller;

import com.example.entity.City;
import com.example.entity.Province;
import com.example.entity.Town;
import com.example.service.CityService;
import com.example.service.ProvinceService;
import com.example.service.TownService;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

@RestController
@CrossOrigin
@RequestMapping("/book")
public class AddressController {

    @Resource
    private ProvinceService provinceService;

    @Resource
    private CityService cityService;

    @Resource
    private TownService townService;

    /**
     * 查询所有省份信息
     * */
    @GetMapping("/province")
    public List<Province> findAll(){
        return provinceService.findAll();
    }

    /**
     * 根据省份编号查询市级信息
     * */
    @GetMapping("/city/{provinceCode}")
    public List<City> findByProvinceCode(@PathVariable("provinceCode") String provinceCode){
        return cityService.findByProvinceCode(provinceCode);
    }

    /**
     * 根据市级编号查询区域信息
     * */
    @GetMapping("/town/{cityCode}")
    public List<Town> findByCityCode(@PathVariable("cityCode") String cityCode){
        return townService.findByCityCode(cityCode);
    }
}

最后是config包下的分页拦截器:
MPConfig:

package com.example.config;

import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MPConfig {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        //1. 定义 Mp 拦截器
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        //2. 添加具体的拦截器 分页拦截器
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return interceptor;
    }
}

至此后台的编写已经完成。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值