Java实战(三)之增、删、改、查

项目目录结构:

数据库表:



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;
        }
    }
}

 

 

 

 

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值