后端Spring Boot+前端Android交互+MySQL增删查改

2022.01.08 更新

已更新新版本博客,更新内容很多,因此新开了一篇博客,戳这里

1 概述

使用Spring Boot作为后端框架与Android端配合MySQL进行基本的交互,包含了最基本的增删查改功能。

2 开发环境

  • IDEA 2019.2
  • Tomcat 9.0.27
  • MySQL 8.0.17
  • Spring Boot 2.2.1
  • JDK 8

3 后端

3.1 新建一个Spring Boot项目

参考此处

3.2 实体类

新建User类作为实体类:

@Entity
public class User {
   
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;
    private String name;
	//getter setter...
}

3.3 持久层

新建UserRepository实现增删查改:

@Repository
public interface UserRepository extends CrudRepository<User,Integer>
{
   
    @Query(value = "select * from user where name = ?1",nativeQuery = true)
    public List<User> findByName(String name);

    @Modifying
    @Query(value = "delete from user where name = ?1",nativeQuery = true)
    public int deleteByName(String name);
}

由于CrudRepository中已经包含了"增"与"改",所以按需要实现自己的"查"与"删"即可。

CrudRepositoryAPI很简单,官方文档

  • "增"使用save即可,参数为实体类
  • "删"使用deleteById,通过主键删除,若不想通过主键删除可以自己编写SQL,像上面一样
  • "查"使用findAllfindById,自定义查找的话需要自己编写SQL
  • "改"也可使用save,注意需要设置主键

@Query用于设置SQL语句,nativeQuery表示使用原生SQL

3.4 业务层

@Transactional
@Service
public class MainService {
   
    @Autowired
    private UserRepository userRepository;

    public Iterable<User> getAllUsers()
    {
   
        return userRepository.findAll();
    }

    public List<User> findByName(String name)
    {
   
        return userRepository.findByName(name);
    }

    public boolean add(String name)
    {
   
        User user = new User();
        user.setName(name);
        userRepository.save(user);
		return true;
    }

    public boolean modify(Integer id,String name)
    {
   
        User user = new User();
        user.setName(name);
        user.setId(id);
        userRepository.save(user);
        return true;
    }

    public boolean deleteByName(String name)
    {
   
        return userRepository.deleteByName(name) != 0;
    }
}
  • getAllUsers():返回所有行,Iterable<E>类型
  • findByName():根据name返回所有name相同的行
  • add直接使用了save,由于save返回的是实体类,原本的代码是这样写的:
return userRepository.save(user) != null;

在这里插入图片描述

但是文档说了不会为null,所以只能强制返回true了。

  • modify使用了idname作为参数,新建一个user,将其作为setter的参数,然后交给save
  • deleteByName使用了自定义的删除函数,返回的是int,在UserRepository中这个int代表SQL影响的行数,删除成功则行数不为0,删除失败,或者没有这行数据则行数为0,因此将返回值与0进行比较

3.5 控制层

@Controller
@RequestMapping(path = "/demo")
public class MainController {
   
    @Autowired
    private MainService mainService;

    @GetMapping(path = "/getAll")
    public @ResponseBody Iterable<User> getAllUsers()
    {
   
        return mainService.getAllUsers();
    }

    @PostMapping(path = "/get")
    public @ResponseBody List<User> findByName(String name)
    {
   
        return mainService.findByName(name);
    }

    @PostMapping(path = "/add")
    public @ResponseBody boolean add(@RequestParam String name)
    {
   
        return mainService.add(name);
    }

    @PostMapping(path = "/modify")
    public @ResponseBody boolean modify(@RequestParam Integer id,@RequestParam String name)
    {
   
        return mainService.modify(id,name);
    }

    @PostMapping(path =
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值