day01_springboot综合案例(三)

简介: day01_springboot综合案例

day01_springboot综合案例(二)https://developer.aliyun.com/article/1433640


添加产品

编写ProductController

/**
     * 新增产品
     * @param product
     * @return
     */
    @PostMapping("save")
    public String save(Product product){
        this.productService.save(product);
        return "redirect:findAll";
    }

编写ProductService

/**
 * 添加产品
 * @param product
 */
void save(Product product);
/**
 * 添加产品
 * @param product
 */
@Override
public void save(Product product) {
    this.productMapper.save(product);
}

编写ProductMapper

/**
 * 添加产品
 * @param product
 */
void save(Product product);

编写ProductMapper.xml

<!--添加产品-->
<insert id="save">
    insert into product(productNum,
                        productName,
                        cityName,
                        departureTime,
                        productPrice,
                        productDesc,
                        productStatus)
                values(#{productNum},
                    #{productName},
                    #{cityName},
                    #{departureTime},
                    #{productPrice},
                    #{productDesc},
                    #{productStatus})
</insert>

产品修改

编写ProductController

/**
     * 修改产品
     * @return
     */
    @PostMapping("edit")
    public String edit(
            @RequestParam("id") String id,
            @RequestParam("productNum") String productNum,
            @RequestParam("productName") String productName,
            @RequestParam("departureTime") String departureTime,
            @RequestParam("cityName") String cityName,
            @RequestParam("productPrice") Integer productPrice,
            @RequestParam("productStatus") String productStatus,
            @RequestParam("productDesc") String productDesc){
        Product product = new Product();
        product.setId(id);
        product.setProductNum(productNum);
        product.setProductName(productName);
        product.setDepartureTimeStr(departureTime);
        product.setCityName(cityName);
        product.setProductPrice(productPrice);
        product.setProductStatusStr(productStatus);
        product.setProductDesc(productDesc);
        this.productService.edit(product);
        return "redirect:findAll";
    }
    /**
     * 修改之前进行查询
     * @param id
     * @param model
     * @return
     */
    @GetMapping("editById")
    public String editById(@RequestParam("id") Integer id , Model model){
       Product product =  this.productService.editById(id);
       model.addAttribute("product",product);
       return "product-edit";
    }

编写ProductService

/**
     * 修改产品之前进行查询用于回显
     * @param pid
     * @return
     */
    Product findById(Integer pid);
    /**
     * 修改产品
     * @param product
     * @return
     */
    void edit(Product product);
/**
     * 修改产品之前进行查询用于回显
     * @param pid
     * @return
     */
    @Override
    public Product findById(Integer pid) {
        return this.productMapper.findById(pid);
    }
    /**
     * 修改产品
     * @param product
     * @return
     */
    @Override
    public void edit(Product product) {
        this.productMapper.edit(product);
    }

编写ProductMapper

/**
 * 修改产品之前进行查询用于回显
 * @param pid
 * @return
 */
Product findById(Integer pid);
/**
 * 修改产品
 * @param product
 * @return
 */
void edit(Product product);

编写ProductMapper.xml

<!--修改产品之前进行查询-->
<select id="findById" resultType="Product">
    select * from product  where id=#{pid}
</select>
<!--修改产品-->
<update id="edit">
    update product set
    productNum=#{productNum},
    productName=#{productName},
    cityName=#{cityName},
    departureTime=#{departureTime},
    productPrice=#{productPrice},
    productDesc=#{productDesc},
    productStatus=#{productStatus}
    where id=#{id}
</update>

产品详情

编写ProductController

/**
     * 产品详情
     * @param id
     * @param model
     * @return
     */
    @GetMapping("findById")
    public String findById(@RequestParam("id") Integer id, Model model){
        Product product = this.productService.editById(id);
        model.addAttribute("product",product);
        return "product-show";
    }

编写ProductService

/**
 * 修改产品之前进行查询用于回显,之前修改写过无需再写
 * @param pid
 * @return
 */
Product findById(Integer pid);
/**
 * 修改产品之前进行查询用于回显
 * @param pid
 * @return
 */
@Override
public Product findById(Integer pid) {
    return this.productMapper.findById(pid);
}

编写ProductMapper

/**
 * 修改产品之前进行查询用于回显
 * @param pid
 * @return
 */
Product findById(Integer pid);

编写ProductMapper.xml

<!--修改产品之前进行查询-->
<select id="findById" resultType="Product">
    select * from product  where id=#{pid}
</select>

产品删除

编写ProductController

/**
     * 指定删除
     * @param id
     * @return
     * TODO 待优化:订单中有产品的相关信息,产品删除了,订单中依然有产品的信息
     */
    @GetMapping("deleteById")
    public String deleteById(@RequestParam("id") Integer id){
        this.productService.deleteById(id);
        return "redirect:findAll";
    }

编写ProductService

/**
 * 删除产品
 * @param pid
 * @return
 */
void deleteById(Integer pid);
@Service
public class ProductServiceImpl implements ProductService {
    @Autowired
    private ProductMapper productMapper;
    @Autowired
    private OrderMapper orderMapper;
    /**
     * 删除产品
     * @param pid
     * @return
     */
    @Override
    public void deleteById(Integer pid) {
        //删除订单中商品外键
        this.orderMapper.updateById(pid);
        //删除商品本身
        this.productMapper.deleteById(pid);
    }
}

编写ProductMapper

/**
 * 删除订单中的商品
 */
void updateById(Integer pid);
/**
 * 删除产品
 * @param pid
 * @return
 */
void deleteById(Integer pid);

编写ProductMapper.xml

<!--删除产品-->
<delete id="deleteById">
    delete from product where id=#{pid}
</delete>
<?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="cn.yanqi.ssm.mapper.OrderMapper">
    <!--删除订单中商品-->
    <update id="updateById">
        update  orders set  productId =  null where productId = #{id}
    </update>
</mapper>

批量删除

/**
     * 批量删除
     * @param ids
     * @return
     */
    @PostMapping("selectDelete")
    public String selectDelete(@RequestParam("ids") int[] ids){
        for (int id : ids) {
            this.productService.deleteById(id);
        }
        return "redirect:findAll";
    }

tMapper;

@Autowired
private OrderMapper orderMapper;
/**
 * 删除产品
 * @param pid
 * @return
 */
@Override
public void deleteById(Integer pid) {
    //删除订单中商品外键
    this.orderMapper.updateById(pid);
    //删除商品本身
    this.productMapper.deleteById(pid);
}

}

### 编写ProductMapper
```java
/**
 * 删除订单中的商品
 */
void updateById(Integer pid);
/**
 * 删除产品
 * @param pid
 * @return
 */
void deleteById(Integer pid);

编写ProductMapper.xml

<!--删除产品-->
<delete id="deleteById">
    delete from product where id=#{pid}
</delete>
<?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="cn.yanqi.ssm.mapper.OrderMapper">
    <!--删除订单中商品-->
    <update id="updateById">
        update  orders set  productId =  null where productId = #{id}
    </update>
</mapper>

批量删除

/**
     * 批量删除
     * @param ids
     * @return
     */
    @PostMapping("selectDelete")
    public String selectDelete(@RequestParam("ids") int[] ids){
        for (int id : ids) {
            this.productService.deleteById(id);
        }
        return "redirect:findAll";
    }


目录
相关文章
|
7月前
|
SQL JavaScript Java
springboot+springm vc+mybatis实现增删改查案例!
springboot+springm vc+mybatis实现增删改查案例!
|
1月前
|
消息中间件 NoSQL Java
springboot整合常用中间件框架案例
该项目是Spring Boot集成整合案例,涵盖多种中间件的使用示例,每个案例项目使用最小依赖,便于直接应用到自己的项目中。包括MyBatis、Redis、MongoDB、MQ、ES等的整合示例。
114 1
|
2月前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
547 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
2月前
|
Web App开发 JavaScript Java
elasticsearch学习五:springboot整合 rest 操作elasticsearch的 实际案例操作,编写搜索的前后端,爬取京东数据到elasticsearch中。
这篇文章是关于如何使用Spring Boot整合Elasticsearch,并通过REST客户端操作Elasticsearch,实现一个简单的搜索前后端,以及如何爬取京东数据到Elasticsearch的案例教程。
231 0
elasticsearch学习五:springboot整合 rest 操作elasticsearch的 实际案例操作,编写搜索的前后端,爬取京东数据到elasticsearch中。
|
3月前
|
消息中间件 Java Kafka
springboot项目启动报错-案例情景介绍
springboot项目启动报错-案例情景介绍
95 2
|
6月前
|
缓存 NoSQL Java
案例 采用Springboot默认的缓存方案Simple在三层架构中完成一个手机验证码生成校验的程序
案例 采用Springboot默认的缓存方案Simple在三层架构中完成一个手机验证码生成校验的程序
122 5
|
6月前
|
JSON 前端开发 Java
Springboot mvc开发之Rest风格及RESTful简化开发案例
Springboot mvc开发之Rest风格及RESTful简化开发案例
76 2
|
6月前
|
SQL Java 数据库连接
2万字实操案例之在Springboot框架下基于注解用Mybatis开发实现基础操作MySQL之预编译SQL主键返回增删改查
2万字实操案例之在Springboot框架下基于注解用Mybatis开发实现基础操作MySQL之预编译SQL主键返回增删改查
90 2
|
5月前
|
存储 Java 数据中心
Spring Boot与微服务治理框架的集成成功案例
Spring Boot与微服务治理框架的集成成功案例
|
7月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的课程案例库平台的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的课程案例库平台的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的课程案例库平台的详细设计和实现(源码+lw+部署文档+讲解等)