先导入takeaway.sql
sql表 business
CREATE TABLE `business` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '序号',
`username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '账号',
`password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '密码',
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '名称',
`avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 'logo',
`role` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '角色',
`phone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '电话',
`info` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '简介',
`address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '地址',
`license` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '营业执照',
`status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '待审核' COMMENT '审核状态',
`time_range` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '营业时间',
`type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '类型',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '商家表' ROW_FORMAT = Dynamic;
配置项目
启动成功
怎么访问数据接口?
- 拿到token
- 通过token去访问接口数据
注意:
mybatis插件
mybatis开启驼峰配置
注意接口请求数据的格式,下划线转驼峰
更新数据
增删改查规范
Business.java 实体类 BusinessController.java Http接口层
- add
- deleteById
- deleteBatch
- updateById
- selectById
- selectAll
- selectPage
BusinessService.java 业务层 - add - deleteById - deleteBatch - updateById - selectById - selectAll - selectPage
BusinessMapper.java 数据接口层 - insert - deleteById - updateById - selectAll
BusinessMapper.xml 数据访问sql语句 新增
<insert id="insert" parameterType="com.example.entity.Business" useGeneratedKeys="true">
insert into business
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">id,</if>
...
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">#{id},</if>
</trim>
</insert>
更新
<update id="updateById" parameterType="com.example.entity.Business">
update business
<set>
<if test="username != null">
username = #{username},
</if>
...
where id = #{id}
</update>
查询
<select id="selectAll" parameterType="com.example.entity.Business" resultType="com.example.entity.Business">
select * from business
<where>
<if test="id != null">
and id = #{id}
</if>
</where>
order by id desc
</select>
mapper.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.example.mapper.BusinessMapper">
</mapper>
详细代码
Business.java
package com.example.entity;
/**
* 商家
*/
public class Business {
/**
* 主键
*/
private Integer id;
/**
* 用户名
*/
private String username;
private String password;
private String name;
private String avatar;
private String role;
private String phone;
private String info;
private String address;
private String license;
private String status;
private String timeRange;
private String type;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAvatar() {
return avatar;
}
public void setAvatar(String avatar) {
this.avatar = avatar;
}
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getLicense() {
return license;
}
public void setLicense(String license) {
this.license = license;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getTimeRange() {
return timeRange;
}
public void setTimeRange(String timeRange) {
this.timeRange = timeRange;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
BusinessController.java
package com.example.controller;
import cn.hutool.core.util.ObjectUtil;
import com.example.common.Result;
import com.example.common.enums.ResultCodeEnum;
import com.example.entity.Business;
import com.example.service.BusinessService;
import com.github.pagehelper.PageInfo;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
* 商家管理相关接口
*/
@RestController
@RequestMapping("/business")
public class BusinessController {
@Resource
private BusinessService businessService;
/**
* 新增商家
*/
@PostMapping("/add")
public Result add(@RequestBody Business business) {
// 数据校验
if (ObjectUtil.isEmpty(business.getUsername()) || ObjectUtil.isEmpty(business.getPassword())) {
return Result.error(ResultCodeEnum.PARAM_LOST_ERROR);
}
businessService.add(business);
return Result.success();
}
/**
* 删除商家
*/
@DeleteMapping("/delete/{id}")
public Result delete(@PathVariable Integer id) {
businessService.deleteById(id);
return Result.success();
}
/**
* 批量删除
*/
@DeleteMapping("/delete/batch")
public Result deleteBatch(@RequestBody List<Integer> ids) {
businessService.deleteBatch(ids);
return Result.success();
}
/**
* 修改商家
*/
@PutMapping("/update")
public Result update(@RequestBody Business business) {
businessService.updateById(business);
return Result.success();
}
/**
* 查询所有商家
*/
@GetMapping("/selectAll")
public Result selectAll(Business business) {
List<Business> list = businessService.selectAll(business);
return Result.success(list);
}
/**
* 查询单个商家
*/
@GetMapping("/selectById/{id}")
public Result selectAll(@PathVariable Integer id) {
Business business = businessService.selectById(id);
return Result.success(business);
}
/**
* 分页条件查询
*/
@GetMapping("/selectPage")
public Result selectPage(Business business,
@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "10") Integer pageSize) {
PageInfo<Business> pageInfo = businessService.selectPage(business, pageNum, pageSize);
return Result.success(pageInfo);
}
}
BusinessService.java
package com.example.service;
import cn.hutool.core.util.ObjectUtil;
import com.example.common.enums.ResultCodeEnum;
import com.example.common.enums.RoleEnum;
import com.example.entity.Business;
import com.example.exception.CustomException;
import com.example.mapper.BusinessMapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Objects;
/**
* 商家相关的业务方法
*/
@Service
public class BusinessService {
@Resource
private BusinessMapper businessMapper;
/**
* 新增商家
*/
public void add(Business business) {
Business dbBusiness = this.selectByUsername(business.getUsername());
// 如果根据新增数据的账号查询查到了数据 那么这个数据不允许插入,因为账号不能重复
if (ObjectUtil.isNotEmpty(dbBusiness)) {
throw new CustomException(ResultCodeEnum.USER_EXIST_ERROR);
}
business.setRole(RoleEnum.BUSINESS.name());
businessMapper.insert(business);
}
/**
* 单个删除
*/
public void deleteById(Integer id) {
businessMapper.deleteById(id);
}
/**
* 批量删除
*/
public void deleteBatch(List<Integer> ids) {
for (Integer id : ids) {
this.deleteById(id);
}
}
/**
* 修改商家
*/
public void updateById(Business business) {
// 先根据id查询商家是否存在,商家不存在那就返回错误信息
Business dbBusiness1 = selectById(business.getId());
if (ObjectUtil.isEmpty(dbBusiness1)) {
throw new CustomException(ResultCodeEnum.USER_NOT_EXIST_ERROR);
}
Business dbBusiness2 = this.selectByUsername(business.getUsername());
// 根据当前更新的商家的账号查询数据库 如果数据库存在跟当前更新商家一样账号的数据 那么当前的更新是不合法的 数据重复了
if (ObjectUtil.isNotEmpty(dbBusiness2) && !Objects.equals(dbBusiness2.getId(), business.getId())) {
throw new CustomException(ResultCodeEnum.USER_EXIST_ERROR);
}
businessMapper.updateById(business);
}
/**
* 查询所有
*/
public List<Business> selectAll(Business business) {
return businessMapper.selectAll(business);
}
/**
* 根据账号查询
*/
public Business selectByUsername(String username) {
Business params = new Business();
params.setUsername(username);
List<Business> list = this.selectAll(params);
return list.size() == 0 ? null : list.get(0);
}
/**
* 根据ID查询
*/
public Business selectById(Integer id) {
Business params = new Business();
params.setId(id);
List<Business> list = this.selectAll(params);
return list.size() == 0 ? null : list.get(0);
}
/**
* 分页条件查询
*/
public PageInfo<Business> selectPage(Business business, Integer pageNum, Integer pageSize) {
PageHelper.startPage(pageNum, pageSize);
List<Business> list = businessMapper.selectAll(business);
return PageInfo.of(list);
}
}
BusinessMapper.java
package com.example.mapper;
import com.example.entity.Business;
import java.util.List;
/**
* 商家相关的数据访问接口
*/
public interface BusinessMapper {
List<Business> selectAll(Business business);
int insert(Business business);
int updateById(Business business);
int deleteById(Integer id);
}
BusinessMapper.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.example.mapper.BusinessMapper">
<insert id="insert" parameterType="com.example.entity.Business" useGeneratedKeys="true">
insert into business
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">id,</if>
<if test="username != null">username,</if>
<if test="password != null">password,</if>
<if test="name != null">name,</if>
<if test="avatar != null">avatar,</if>
<if test="role != null">role,</if>
<if test="phone != null">phone,</if>
<if test="info != null">info,</if>
<if test="address != null">address,</if>
<if test="license != null">license,</if>
<if test="status != null">status,</if>
<if test="timeRange != null">time_range,</if>
<if test="type != null">type,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">#{id},</if>
<if test="username != null">#{username},</if>
<if test="password != null">#{password},</if>
<if test="name != null">#{name},</if>
<if test="avatar != null">#{avatar},</if>
<if test="role != null">#{role},</if>
<if test="info != null">#{info},</if>
<if test="address != null">#{address},</if>
<if test="license != null">#{license},</if>
<if test="status != null">#{status</if>
<if test="timeRange != null">#{timeRange},</if>
<if test="type != null">#{type},</if>
</trim>
</insert>
<update id="updateById" parameterType="com.example.entity.Business">
update business
<set>
<if test="username != null">
username = #{username},
</if>
<if test="password != null">
password = #{password},
</if>
<if test="name != null">
name = #{name},
</if>
<if test="avatar != null">
avatar = #{avatar},
</if>
<if test="role != null">
role = #{role},
</if>
<if test="phone != null">
phone = #{phone},
</if>
<if test="info != null">
info = #{info},
</if>
<if test="address != null">
address = #{address},
</if>
<if test="license != null">
license = #{license},
</if>
<if test="status != null">
status = #{status},
</if>
<if test="timeRange != null">
time_range = #{timeRange},
</if>
<if test="type != null">
type = #{type},
</if>
</set>
where id = #{id}
</update>
<delete id="deleteById">
delete from business where id = #{id}
</delete>
<select id="selectAll" parameterType="com.example.entity.Business" resultType="com.example.entity.Business">
select * from business
<where>
<if test="id != null">
and id = #{id}
</if>
<if test="username != null">
and username = #{username}
</if>
<if test="name != null">
and name like concat('%', #{name}, '%')
</if>
</where>
order by id desc
</select>
</mapper>