增删改查练手项目【springboot + mybatis + mysql】
(以产品实例为例)
(1)controller层:
@RestController
@RequestMapping("product")
@Api(tags = "产品")
@CrossOrigin("*") //解决跨域问题
@Slf4j
class ProductController{
/**
* 服务对象
*/
@Resource
private ProductService productService;
/**
* 获取产品列表(分页)
* @param param product和Page参数
* @return 产品列表
*/
@ApiOperation(value = "获取产品列表接口",notes = "获取产品列表接口")
@GetMapping("/getProduct")
@ResponseBody
public List<Product> getProduct(@RequestBody ProductParam param) {
Product product = param.getProduct();
Page page = param.getPage();
return this.productService.getProduct(product,page);
}
/**
* 新增产品接口
* @param product 产品实例
* @return 影响行数
*/
@ApiOperation(value = "新增产品接口",notes = "新增产品接口")
@PostMapping("/addProduct")
public int addProduct(@RequestBody Product product) {
return this.productService.addProduct(product);
}
/**
* 修改产品接口
* @param product 产品实例
* @return 影响行数
*/
@ApiOperation(value = "修改产品接口",notes = "修改产品接口")
@PostMapping("/updateProduct")
public int updateProduct(@RequestBody Product product) {
return this.productService.updateProduct(product);
}
/**
* 删除产品接口
* @param productId 产品id
* @return 影响行数
*/
@ApiOperation(value = "删除产品接口",notes = "删除产品接口")
@PostMapping("/deleteProduct")
public int deleteProduct(String productId) {
return this.productService.deleteProduct(productId);
}
}
@Data
class ProductParam{
private Product product;
private Page page;
}
(2)service层接口:
/**
* 获取产品列表
* @return 产品列表
*/
List<Product> getProduct(Product product, Page page);
/**
* 新增产品
* @param product 产品实例
* @return 影响行数
*/
int addProduct(Product product);
/**
* 修改产品
* @param product 产品实例
* @return 影响行数
*/
int updateProduct(Product product);
/**
* 删除产品
* @param productId 产品id
* @return 影响行数
*/
int deleteProduct(String productId)
(3)serviceImpl实现类:
@Service("productService")
public class ProductServiceImpl implements ProductService {
@Resource
private ProductDao productDao;
/**
* 获取产品列表(分页查询)
* @param product 查询条件
* @param page 分页对象
* @return 产品列表
*/
@Override
public List<Product> getProduct(Product product, Page page) {
return productpDao.query(product,page);
}
/**
* 新增产品
* @param productp 产品实例
* @return 影响行数
*/
@Override
public int addProduct(Product product) {
return productpDao.insert(product);
}
/**
* 修改产品
* @param productp 产品实例
* @return 影响行数
*/
@Override
public int updateProduct(Product product) {
return productpDao.update(productp);
}
/**
* 删除产品
* @param productId 产品id
* @return 影响行数
*/
@Override
public int deleteProduct(String productId) {
return productpDao.deleteById(productId);
}
}
(4)dao层接口:
/**
* 查询指定行数据
* @param product 查询条件
* @param page 分页对象
* @return 对象列表
*/
List<Product> query(@Param("product") Product product, @Param("page") Page page);
/**
* 新增数据
* @param product 实例对象
* @return 影响行数
*/
int insert(Product product);
/**
* 修改数据
* @param product 实例对象
* @return 影响行数
*/
int update(Product product);
/**
* 通过主键删除数据
* @param productId 主键
* @return 影响行数
*/
int deleteById(String productId);
(5)mapper.xml:
<!--查询指定行数据(分页)-->
<select id="query" resultMap="ProductMap">
select
PRODUCT_ID, PRODUCT_NM, PRODUCT_TYPE
from product_list
<where>
<if test="productId != null and productId != ''">
and PRODUCT_ID = #{productId}
</if>
<if test="productNm != null and productNm != ''">
and PRODUCT_NM = #{productNm}
</if>
<if test="productType != null">
and PRODUCT_TYPE = #{productType}
</if>
</where>
order by ${page.sort} ${page.sortType}
limit #{page.limitCount}, #{page.pageNum}
</select>
<!--新增所有列-->
<insert id="insert" keyProperty="productId" useGeneratedKeys="true">
insert into product_list(PRODUCT_NM, PRODUCT_TYPE)
values (#{productNm}, #{productType})
</insert>
<!--通过主键修改数据-->
<update id="update">
update product_list
<set>
<if test="productNm != null and productNm != ''">
PRODUCT_NM = #{productNm},
</if>
<if test="productType != null">
PRODUCT_TYPE = #{productType},
</if>
</set>
where PRODUCT_ID = #{productId}
</update>
<!--通过主键删除-->
<delete id="deleteById">
delete from product_list where PRODUCT_ID = #{productId}
</delete>
(6)测试调用:
http://IP:端口号/项目name/product/getProduct