welcome to pengfei's blog

spring boot概述

1、技术概述,描述这个技术是做什么?学习该技术的原因,技术的难点在哪里。
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。本人在项目中负责后端开发,学习这个能快速有效地建立实体类,关联更改数据库,
难点在于需要掌握一定地spring基础。
2、技术详述,描述你是如何实现和使用该技术的,要求配合代码和流程图详细描述。可以再细分多个点,分开描述各个部分。
这次由于本人负责后端的开发,且于几个组员共同进行,所以任务相对没那么重,主要使用spring boot写了数据库在后端代码中的实体类于对应字段,实现了对数据库的增删改查等一系列操作,同时使用
一些算法实现了前端所要求的部分功能,并用了一些算法进行改进。spring boot的一大优势就是能够快速实现数据库的操作,只要提前关联好数据库,定义实体类对应数据库中的表,使实体类中的相应元素与数据库表中
的对应字段相对于就可以通过对实体类的操作,快速更改变动数据库中的对应表和字段。
比如数据库里有一个用户表,那么可以先写一个用户实体类UserEntity,代码如下:
 

    @Entity
    @Table(name = "user", schema = "", catalog = "pinezone")
    public class UserEntity implements Comparable<UserEntity>{
        private int id;
        private String name;
        private String password;
        private int sex;
        private Timestamp date;
        private String phone;
        private String sno;
        private String profile;
        private int level;
        private Long pid;
        private int state;
		······
    }

 
类中的元素id,name等分别一一对应数据库user表中的id,name等字段
 
然后用定义接口Userdao,利用jpa,将实体对象持久化到数据库表中:

package com.sgxqwyh.pinezone.dao;
import com.sgxqwyh.pinezone.pojo.UserEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface UserDAO extends JpaRepository<UserEntity, Integer> {

    //章权
    @Query(value = "SELECT sex,count(id) FROM pinezone.user group by sex;", nativeQuery = true)
    public List<Object[]> findSex();

    //俊鹏
    UserEntity findByNameAndPassword(String name, String password);
    UserEntity findByPhone(String phone);
}

 
里面可以快速定义查找方法,如通过电话号码查询某一个用户findByPhone();findby+查询条件(可以有多个),实现快速查找,这些框架会自动实现,无需加上复杂的
sql语句实现
 
接下来便可利用UserDao类实现数据库操作了:

    //查询一个用户
    @GetMapping(value = "/user")
    public UserEntity userSelect(@RequestParam("id") Integer id) {
        return userDAO.findById(id).get();
    }

因为根据主键查找会自动生成函数和实现,所以这里只需要利用findByid就可以查询某一个id号的用户
下面为一个完整的流程图:
cmd-markdown-logo
 
3、技术使用中遇到的问题和解决过程。
再删除或改动某一个数据库某一个表的组件时,由于另一个或多个表中的外键是该表的主键,所以要一起更改,加入一个个对应地改,比较麻烦
解决方法:利用数据表的联级进行删除或修改数据
比如有两个表User表和Role表,User表中有一个role_id的字段表示角色id号,与Role表中的id(主键)字段对应,这里可以采取下面的解决方法:
Role代码:

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Integer id;
    @Column(name = "name")
    private String name;

    @OneToMany(cascade = {CascadeType.REMOVE},mappedBy = "role")
    private Set<User> userSet = new HashSet<>();

User表代码:

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Long id;
    @Column(name = "name")
    private String name;
    @Column(name = "role_id",insertable = false,updatable = false)
    private Integer role_id;

    @ManyToOne(cascade = CascadeType.PERSIST)
    @JoinColumn(name = "role_id")
    private Role role;

利用一对多和多对一关系,这样的话,假如要删除Role表中某一个id为xx的记录,那么User表中所有role_id为xx的记录都将会被删除。
4、进行总结。
spring boot是对spring框架的延伸,其中一个很好的地方就是能简化数据库操作,当然还有很多方便的地方,因为我只是用它服务我所要的领域,所以有些细节的地方我还
不是很懂。但总体而言,这个技术很适合后端开发者学习和利用。
5、参考的文献、博客(标题、作者、链接)。
SpringBoot 零基础教学——以东以南
Spring Boot -01- 快速入门篇(图文教程)——肖朋伟
jpa OneToMany级联操作详解之级联删除——eddle

posted @ 2020-06-22 16:45  gigiboy  阅读(239)  评论(0编辑  收藏  举报