欢迎光临
我们一直在努力

curd(spring boot框架)

curd就是“增加,删除,修改,查询”的缩写,当然是对数据库的修改

从前端到数据库有4层 

从上到下分别是control -> service -> mapper -> pojo 

一般是control调用 service接口后用serviceimpl中方法,serviceimpl调用mapper

control是1.接收前端传过来的参数(@RequestParam、@PathVariable、@RequestBody)

              2.调用 Service 执行业务

              3.封装返回结果(Result)返回给前端

              4.参数非空的校验

service是写业务逻辑,和处理业务规则,调用 mapper。

              1.业务判断(检查数据本身合不合法,业务规则判断

              2.组装实体对象(把control传来的数据打包成mapper层看的懂的形式)

              3. mapper 完成数据库操作

              4.事务控制(一些安全的注解如@Transactional)

mapper是专门操作数据库,写 SQL,和数据库打交道。

                1.定义接口方法,配合 xml / 注解写 SQL。

Pojo 也叫 Entity   对应数据库表,数据库一行记录就是一个对象。

               1.封装数据库的数据,用来存数据、传数据。

一般要简单的对数据库操作用mybatis-plus (mp)依赖自带的方法

maven

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>

<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.3.1</version>
</dependency>

要使用mp就在Mapper层继承BaseMapper<类名>

@Mapper
public interface CategoryMapper extends BaseMapper<Category> {
}

后在serviceimpl中声明就可以使用了

@Autowired
private SetmealDishMapper setmealDishMapper;

mp常用的方法

新增(实体对象mapper.insert(实体对象))

Dish dish = new Dish();

dish.setName("番茄炒蛋");

dishMapper.insert(dish);

删除(有三种,deleteById(根据id),deleteBatchIds(根据id集合),deleteByMap(按map条件删除))

dishMapper.deleteById(1L);

dishMapper.deleteBatchIds(List.of(1L,2L));

Map<String,Object> map = new HashMap<>();
map.put("dish_id", 10L);
int count = dishFlavorMapper.deleteByMap(map);

修改updateById//根据id更新,只更新实体中非null字段

Dish dish = new Dish();
dish.setId(5L);
dish.setStatus(0);
dishMapper.updateById(dish);
//只更新status,其他字段不会被覆盖
 

还有种条件修改

用UpdateWrapper是mp中自带的条件构造器(先建造一个再写条件)

UpdateWrapper<User> wrapper = new UpdateWrapper<>();
wrapper.eq("id", 1)      
  .set("name", "张三"); // set name = '张三'
userMapper.update(null, wrapper);

查询(分两种  1.直接查询 2. 分页查询)//分页查询不细说具体看我的分页博客

查询单条

用selectById(用id来查询)

T selectById(Serializable id);

查询多条

selectBatchIds// 根据id批量查询

List<T> selectBatchIds(Collection idList);

条件查询(QueryWrapper)

queryWrapper是mp中自带的条件构造器(先建造一个再写条件)

QueryWrapper<Dish> wrapper = new QueryWrapper<>();//建造

wrapper.eq("category_id", 2)//满足category_id为2

.like("name","土豆")//满足name 为土豆

List<Dish> list = dishMapper.selectList(wrapper);//自动查找满足的对象

一般在项目中在control

用@PostMapping 接收新增请求

用@GetMapping接收查询请求

用@PutMapping接收修改请求

用@DeleteMapping接收删除请求

后定义一个函数来链接service

一个简单的例子(模板)

control层(代码(改数据库))

@RestController
public class DishController {

@Autowired private DishService dishService;
@PostMapping("status/{status}")

public Result updateStatus(@PathVariable Integer status,@RequestParam Long id){ dishService.updateStatus(status,id);

return Result.success(); }
}

service

@Service
public interface DishService {
void updateStatus(Integer status, Long id);
}

serviceImpl

@Service

public class DishServiceImpl implements DishService {
@Autowired
private DishMapper dishMapper;

@Override
public void updateStatus(Integer status, Long id) {
Dish dish = new Dish();
dish.setStatus(status);
dish.setId(id);
dishMapper.updateById(dish);
}
}

mapper

@Mapper
public interface DishMapper extends BaseMapper<Dish> {

}

poor

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Dish implements Serializable {

private static final long serialVersionUID = 1L;
@TableId(type = IdType.AUTO)
private Long id;
private String name;
private Long categoryId;
private BigDecimal price;
private String image;
private String description;
private Integer status;
private LocalDateTime createTime;
private LocalDateTime updateTime;
private Long createUser;
private Long updateUser;

}

//还有啥,之后想到再加

赞(0)
未经允许不得转载:171主机测评 » curd(spring boot框架)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址