SSM整合详细教学(上)(二)

简介: SSM整合详细教学(上)(二)

2. 功能模块开发


2.1 数据层开发(BookDao)


Book实体类
public class Book {
    private Integer id;
    private String type;
    private String name;
    private String description;
    //自行添加getter、setter、toString()方法
}


BookDao接口


public interface BookDao {
    @Insert("insert into tbl_book (type,name,description) values(#{type},#{name},#{description})")
    public int save(Book book);  //返回值表示影响的行数
    @Update("update tbl_book set type = #{type}, name = #{name}, description = #{description} where id = #{id}")
    public int update(Book book);
    @Delete("delete from tbl_book where id = #{id}")
    public int delete(Integer id);
    @Select("select * from tbl_book where id = #{id}")
    public Book getById(Integer id);
    @Select("select * from tbl_book")
    public List<Book> getAll();
}



2.2 业务层开发(BookService/BookServiceImpl)


BookService接口


@Transactional //表示所有方法进行事务管理
public interface BookService {
    /**
     * 保存
     * @param book
     * @return
     */
    public boolean save(Book book);
    /**
     * 修改
     * @param book
     * @return
     */
    public boolean update(Book book);
    /**
     * 按id删除
     * @param id
     * @return
     */
    public boolean delete(Integer id);
    /**
     * 按id查询
     * @param id
     * @return
     */
    public Book getById(Integer id);
    /**
     * 查询全部
     * @return
     */
    public List<Book> getAll();
}



BookServiceImpl实现类


@Service
public class BookServiceImpl implements BookService {
    @Autowired
    private BookDao bookDao;
    public boolean save(Book book) {
        bookDao.save(book);
        return true;
    }
    public boolean update(Book book) {
        bookDao.update(book);
        return true;
    }
    public boolean delete(Integer id) {
        bookDao.delete(id);
        return true;
    }
    public Book getById(Integer id) {
        return bookDao.getById(id);
    }
    public List<Book> getAll() {
        return bookDao.getAll();
    }
}



2.3 表现层开发(BookController)


@RestController
@RequestMapping("/books")
public class BookController {
    @Autowired
    private BookService bookService;
    @PostMapping
    public boolean save(@RequestBody Book book) {
        return bookService.save(book);
    }
    @PutMapping
    public boolean update(@RequestBody Book book) {
        return bookService.update(book);
    }
    @DeleteMapping("/{id}")
    public boolean delete(@PathVariable Integer id) {
        return bookService.delete(id);
    }
    @GetMapping("/{id}")
    public Book getById(@PathVariable Integer id) {
        return bookService.getById(id);
    }
    @GetMapping
    public List<Book> getAll() {
        return bookService.getAll();
    }
}



3. 接口测试


3.1 Spring整合Junit测试业务层方法


@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SpringConfig.class)
public class BookServiceTest {
    @Autowired
    private BookService bookService;
    @Test
    public void testGetById(){
        Book book = bookService.getById(1);
        System.out.println(book);
    }
    @Test
    public void testGetAll(){
        List<Book> all = bookService.getAll();
        System.out.println(all);
    }
}



3.2 postman测试表现层接口


测试保存图书


1c531661023fea5565e22571c02fc1b8_e68b48883132b6408a39ee5b2b105bab.png


这里就以保存图书为例,其他接口同样测试


二、表现层数据封装


目前我们表现层响应给客户端的数据有哪几种?


1. 表现层响应数据的问题


问题:我们表现层增删改方法返回true或者false表示是否成功,getById()方法返回一个json对象,getAll()方法返回一个json对象数组,这里就出现了三种格式的响应结果,极其不利于前端解析。


16893fb883d072de91d361fab76fe2d2_a202e4d8f212b405fee0f0a99b8cbeb7.png


解决:我们需要统一响应结果的格式


2. 定义Result类封装响应结果


2.1 Result类封装响应结果



         



注意事项:


Result类中的字段并不是固定的,可以根据需要自行增减


2.2 Code类封装响应码


//状态码
public class Code {
    public static final Integer SAVE_OK = 20011;
    public static final Integer DELETE_OK = 20021;
    public static final Integer UPDATE_OK = 20031;
    public static final Integer GET_OK = 20041;
    public static final Integer SAVE_ERR = 20010;
    public static final Integer DELETE_ERR = 20020;
    public static final Integer UPDATE_ERR = 20030;
    public static final Integer GET_ERR = 20040;
}


注意事项:


Code类的常量设计也不是固定的,可以根据需要自行增减,例如将查询再进行细分为GET_OK,GET_ALL_OK,GET_PAGE_OK


3 表现层数据封装返回Result对象


@RestController
@RequestMapping("/books")
public class BookController {
    @Autowired
    private BookService bookService;
    @PostMapping
    public Result save(@RequestBody Book book) {
        boolean flag = bookService.save(book);
        return new Result(flag ? Code.SAVE_OK:Code.SAVE_ERR,flag);
    }
    @PutMapping
    public Result update(@RequestBody Book book) {
        boolean flag = bookService.update(book);
        return new Result(flag ? Code.UPDATE_OK:Code.UPDATE_ERR,flag);
    }
    @DeleteMapping("/{id}")
    public Result delete(@PathVariable Integer id) {
        boolean flag = bookService.delete(id);
        return new Result(flag ? Code.DELETE_OK:Code.DELETE_ERR,flag);
    }
    @GetMapping("/{id}")
    public Result getById(@PathVariable Integer id) {
        Book book = bookService.getById(id);
        Integer code = book != null ? Code.GET_OK : Code.GET_ERR;
        String msg = book != null ? "" : "数据查询失败,请重试!";
        return new Result(code,book,msg);
    }
    @GetMapping
    public Result getAll() {
        List<Book> bookList = bookService.getAll();
        Integer code = bookList != null ? Code.GET_OK : Code.GET_ERR;
        String msg = bookList != null ? "" : "数据查询失败,请重试!";
        return new Result(code,bookList,msg);
    }
}


相关文章
|
7月前
|
前端开发 JavaScript Java
毕业设计论文|基于SSM的网络教学系统设计与实现
毕业设计论文|基于SSM的网络教学系统设计与实现
126 0
|
Java 关系型数据库 MySQL
基于SSM的教学管理系统(有报告)。Javaee项目。
基于SSM的教学管理系统(有报告)。Javaee项目。
|
Java 关系型数据库 MySQL
基于SSM的教学课程评价管理系统(有报告)。Javaee项目。
基于SSM的教学课程评价管理系统(有报告)。Javaee项目。
|
6月前
|
小程序 前端开发 测试技术
微信小程序|ssm基于微信小程序的高校课堂教学管理系统
微信小程序|ssm基于微信小程序的高校课堂教学管理系统
|
6月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的大学多媒体教学管理系统附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的大学多媒体教学管理系统附带文章和源代码部署视频讲解等
44 7
|
6月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的数据库课程在线教学附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的数据库课程在线教学附带文章和源代码部署视频讲解等
50 4
|
6月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的景海中学教学管理系统附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的景海中学教学管理系统附带文章和源代码部署视频讲解等
36 5
|
7月前
|
JavaScript Java 测试技术
基于ssm+vue.js的计算机公共基础课程mooc教学平台附带文章和源代码设计说明文档ppt
基于ssm+vue.js的计算机公共基础课程mooc教学平台附带文章和源代码设计说明文档ppt
31 1
|
7月前
|
JavaScript Java 测试技术
基于ssm+vue.js的网络教学平台附带文章和源代码设计说明文档ppt
基于ssm+vue.js的网络教学平台附带文章和源代码设计说明文档ppt
48 1
|
开发框架 JavaScript 前端开发
基于SSM的高校工作量统计系统(教师教学业绩考核系统)(有报告)。Javaee项目,SSM项目。
基于SSM的高校工作量统计系统(教师教学业绩考核系统)(有报告)。Javaee项目,SSM项目。