项目目录结构:
数据库表:
CREATE TABLE `product` (
`pro_id` int(11) NOT NULL AUTO_INCREMENT,
`pro_name` varchar(255) DEFAULT NULL,
`pro_price` int(11) DEFAULT NULL,
`pro_type` int(11) DEFAULT NULL,
`pro_img` varchar(255) DEFAULT NULL,
`pro_des` varchar(255) DEFAULT NULL,
PRIMARY KEY (`pro_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8
对Product增删改查:
1.在entity包下创建实体类Product.java
package com.yxf.demo.entity;
public class Product {
private Integer proID;
private String proName;
private Integer proPrice;
private Integer proType;
private String proImg;
private String proDes;
public Integer getProID() {
return proID;
}
public void setProID(Integer proID) {
this.proID = proID;
}
public String getProName() {
return proName;
}
public void setProName(String proName) {
this.proName = proName;
}
public Integer getProPrice() {
return proPrice;
}
public void setProPrice(Integer proPrice) {
this.proPrice = proPrice;
}
public Integer getProType() {
return proType;
}
public void setProType(Integer proType) {
this.proType = proType;
}
public String getProImg() {
return proImg;
}
public void setProImg(String proImg) {
this.proImg = proImg;
}
public String getProDes() {
return proDes;
}
public void setProDes(String proDes) {
this.proDes = proDes;
}
@Override
public String toString() {
return "Product{" +
"proID=" + proID +
", proName='" + proName + '\'' +
", proPrice='" + proPrice + '\'' +
", proType='" + proType + '\'' +
", proImg='" + proImg + '\'' +
", proDes='" + proDes + '\'' +
'}';
}
}
2.在dao包下创建IProductDao接口
package com.yxf.demo.dao;
import com.yxf.demo.entity.Product;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
@Mapper
public interface IProductDao {
int addProduct(Product product);
List<Product> getProductList();
List<Product> getProductByKey(String proName);
//Dao层的抽象方法中的参数一般情况下默认的是一个参数或者一个对象.当传多个参数时,就容易出现问题了,找不到参数;解决办法就是在每个参数前加上@param注解,括号中注解的名称就是mapper中映射的值
List<Product> getProductByCondition(@Param("proName") String proName, @Param("proType") int proType);
//使用户@Param取别名
int updateProduct(@Param("pro") Product product);
int deleteProduct(int proID);
}
3.在service包下新建IProductService接口
package com.yxf.demo.service;
import com.yxf.demo.entity.Product;
import java.util.List;
public interface IProductService {
//增加
int addProduct(Product product);
//查询所有
List<Product> getProductList();
//根据key查询
List<Product> getProductByKey(String productName);
//模糊查询
List<Product> getProductByCondition(String productName,int productType);
//更新
int updateProduct(Product product);
//根据ID删除
int deleteProduct(int proID);
}
4.在service.impl包下新建ProductServiceImpl.java类
package com.yxf.demo.service.impl;
import com.yxf.demo.dao.IProductDao;
import com.yxf.demo.entity.Product;
import com.yxf.demo.service.IProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class ProductServiceImpl implements IProductService {
@Autowired
IProductDao productDao;
@Override
public int addProduct(Product product) {
int isSuccess = productDao.addProduct(product);
return isSuccess;
}
@Override
public List<Product> getProductList() {
List<Product> productList = productDao.getProductList();
return productList;
}
@Override
public List<Product> getProductByKey(String proName) {
List<Product> productList = productDao.getProductByKey(proName);
return productList;
}
@Override
public List<Product> getProductByCondition(String proName, int proType) {
List<Product> productList = productDao.getProductByCondition(proName, proType);
return productList;
}
@Override
public int updateProduct(Product product) {
int count = 0;
count = productDao.updateProduct(product);
return count;
}
@Override
public int deleteProduct(int proID) {
int count =0;
count = productDao.deleteProduct(proID);
return count;
}
}
5.在resource.mapper包下新建IProductMapp.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.yxf.demo.dao.IProductDao">
<resultMap id="BaseResultMap" type="com.yxf.demo.entity.Product">
<result column="pro_id" jdbcType="INTEGER" property="proID" />
<result column="pro_name" jdbcType="VARCHAR" property="proName" />
<result column="pro_price" jdbcType="INTEGER" property="proPrice" />
<result column="pro_type" jdbcType="INTEGER" property="proType" />
<result column="pro_img" jdbcType="VARCHAR" property="proImg" />
<result column="pro_des" jdbcType="VARCHAR" property="proDes" />
</resultMap>
<insert id="addProduct" parameterType="com.yxf.demo.entity.Product">
INSERT INTO product(pro_name,pro_price,pro_type,pro_img,pro_des) VALUES(#{proName},#{proPrice},#{proType},#{proImg},#{proDes})
</insert>
<select id="queryByProductName" resultType="com.yxf.demo.entity.Product">
SELECT * FROM product WHERE pro_name = #{proName}
</select>
<select id="getProductList" resultMap="BaseResultMap">
SELECT * FROM product
</select>
<select id="getProductByKey" resultMap="BaseResultMap">
SELECT * FROM product WHERE pro_name LIKE concat('%',#{proName},'%') OR pro_des LIKE concat('%',#{proName},'%')
</select>
<select id="getProductByCondition" resultMap="BaseResultMap">
SELECT * FROM product
<where>
<if test="proName != null and proName != ''">
AND pro_name LIKE concat('%',#{proName},'%')
</if>
<if test="proType != null and proType != -1">
AND pro_type = #{proType}
</if>
</where>
</select>
<update id="updateProduct" parameterType="com.yxf.demo.entity.Product">
UPDATE product
<trim prefix="SET" suffixOverrides=",">
<if test="pro.proName != null and pro.proName != ''">
pro_name = #{pro.proName},
</if>
<if test="null != pro.proPrice and -1!= pro.proPrice">
pro_price=#{pro.proPrice},
</if>
<if test="pro.proType != null and pro.proType != -1">
pro_type = #{pro.proType},
</if>
<if test="null != pro.proImg and '' != pro.proImg">
pro_img=#{pro.proImg},
</if>
<if test="null != pro.proDes and '' != pro.proDes">
pro_des=#{pro.proDes},
</if>
</trim>
WHERE pro_id = #{pro.proID}
</update>
<delete id="deleteProduct">
DELETE FROM product WHERE pro_id = #{proID}
</delete>
</mapper>
6.在controller包下新建ProductController.java类
package com.yxf.demo.controller;
import com.yxf.demo.entity.Product;
import com.yxf.demo.entity.Response;
import com.yxf.demo.service.IProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
@RestController
public class ProductController {
@Autowired
private IProductService productService;
//新增
@RequestMapping(value = "/addProduct",method = RequestMethod.POST)
public Response addProduct(@RequestBody Product product){
if(product.getProName()!=null && product.getProPrice()!=0 && product.getProType()!=0 && product.getProImg()!=null && product.getProDes()!=null){
int isSuccess = productService.addProduct(product);
if(isSuccess > 0){
Response response = new Response("添加成功",1,true);
return response;
}else {
Response response = new Response("添加失败",-1,false);
return response;
}
}else {
Response response = new Response("有参数为空",-1,false);
return response;
}
}
//查询所有
@RequestMapping(value = "/getProductList",method = RequestMethod.POST)
public Response getProductList(){
Response response = new Response();
List<Product> productList = productService.getProductList();
response.setResponse(true,"查询成功",1,productList);
return response;
}
//根据key查询
@RequestMapping(value = "/getProductByKey",method = RequestMethod.POST)
public Response getProductByKey(@RequestBody Map<String,String> product){
String proName = product.get("proName");
String proDes = product.get("proDes");
if (proDes!=null){
proName = proDes;
}
Response response = new Response();
List<Product> productList = productService.getProductByKey(proName);
response.setResponse(true,"查询成功",1,productList);
return response;
}
//模糊查询
@RequestMapping(value = "/getProductByCondition",method = RequestMethod.POST)
public Response getProductByCondition(@RequestBody Product product){
String proName = product.getProName();
int proType = product.getProType();
Response response = new Response();
List<Product> productList = productService.getProductByCondition(proName, proType);
response.setResponse(true,"查询成功",1,productList);
return response;
}
//更新数据
@RequestMapping(value = "/updateProduct",method = RequestMethod.POST)
public Response updateProduct(@RequestBody Product product){
int productId = product.getProID();
int count = productService.updateProduct(product);
if(productId!=0){
if(count>0){
Response response = new Response("更新成功",1,true);
return response;
}else {
Response response = new Response("更新失败",-1,false);
return response;
}
}else {
Response response = new Response("请传入商品id",-1,false);
return response;
}
}
//根据id删除数据
@RequestMapping(value = "/deleteProduct",method = RequestMethod.POST)
public Response deleteProduct(@RequestBody Product product){
int productId = product.getProID();
if(productId!=0){
int count = productService.deleteProduct(productId);
if(count>0){
Response response = new Response("删除成功",1,true);
return response;
}else {
Response response = new Response("删除失败,请检查原因",-1,false);
return response;
}
}else {
Response response = new Response("删除失败,请传入商品id",-1,false);
return response;
}
}
}