ssm综合练习第三阶段

spring+springmvc+mybaits

实现功能

级联新增 form表单 用户信息、订单信息 同时保存到用户表和订单表
级联删除 删除用户信息 如果存在订单,级联删除订单

在同一个项目中

级联增加

就是先增加账户信息再增加账单信息,但是在一个功能中实现

saveArAccountOrder.html

<body>
    <form action="/ordersController/saveArAccountOrder" method="post">
        账户:<input type="text" name="username"><br>
        金额:<input type="text" name="money"><br>
        账单名称:<input type="text" name="oName"><br>
        价钱:<input type="text" name="oMoney"><br>
        <input type="submit" value="保存">
    </form>
</body>

在OrderController中添加方法如下

//级联保存
    @RequestMapping("/saveArAccountOrder")
    public String saveArAccountOrder(ArAccount arAccount, Orders orders){
        int i = ordersService.saveArAccountOrders(arAccount,orders);
        if (i > 0){
            return "redirect:/static/accountToOrder.html";
        }
        return "redirect:/static/saveArAccountOrder.html";
    }

service服务层

在OrdersService接口中定义方法

int saveArAccountOrders(ArAccount arAccount,Orders orders);

OrdersServiceImpl实现类

	@Autowired
    private ArAccountMapper arAccountMapper;
    
    @Override
    @Transactional
    public int saveArAccountOrders(ArAccount arAccount,Orders orders) {
        //先保存账户信息然后生成主键
        int j = 0;
        int i = arAccountMapper.saveArAccount(arAccount);
        if(i>0){
            orders.setaId(arAccount.getId());
            //orders.setoTime(date);
            j = ordersMapper.saveOrders(orders);
            if(j == 0){//模拟异常
//                System.out.println(1/0);
                throw new MyException("级联保存用户订单业务失败");
            }
        }
        return j;
    }

在utils包中自定义异常MyException


public class MyException extends RuntimeException {
    private String messages;

    public MyException(String messages) {
        this.messages = messages;
    }

    public MyException() {

    }
    //toString setter getter
}

mapper包中

ArAccountMapper中

在ArAccountMapper类中

	//保存账户信息
    int saveArAccount(ArAccount arAccount);

在ArAccountMapper.xml中增加

	<!--保存用户信息-->
    <insert id="saveArAccount" useGeneratedKeys="true" keyProperty="id">
        insert into ar_account(username,money) values (#{username},#{money})
    </insert>
OrdersMapper中

在OrdersMapper类中增加方法

 //保存账单
int saveOrders(Orders orders);

在OrdersMapper.xml中

	<!--保存账单-->
    <insert id="saveOrders" parameterType="Orders">
        insert into orders(o_name,o_money,a_id) values (#{oName},#{oMoney},#{aId})
    </insert>

在浏览器地址栏中访问saveArAccounOrder.html
在这里插入图片描述
输入信息保存也可以查看数据库可以看到两个表都多了一条数据
在这里插入图片描述

级联删除

在accountToOrder.html中加入
最主要的就是拼接上超链接

  $.get("/ordersController/findArAccountToOrder",function (data) {
                $.each(data,function (index,obj) {
                    var tr = "<tr><td>"+obj.id+"</td><td>"+obj.username+"</td><td>"+obj.money+"</td>" +
                            "<td><a href='/ordersController/deleteCount?id="+obj.id+"'>删除</a></td>"+

先看看效果访问页面

在这里插入图片描述

mapper

账户mapper

ArAccountMapper.java加入如下方法

	//删除账户信息
    int deletcCount(Integer id);

ArAccountMapper.xml中

	<!--删除用户-->
    <delete id="deletcCount">
        delete from ar_account where id = #{id}
    </delete>
订单mapper

OrdersMapper.java加入如下方法

	//删除账单
    int deleteOrders(Integer id);

OrdersMapper.xml中

	<!--删除账单-->
    <delete id="deleteOrders">
        delete from orders where a_id = #{aId}
    </delete>

service层

OrdersService接口中

int deleteCount(Integer id);

OrdersServiceImpl实现类中

@Override
    public int deleteCount(Integer id) {
        int j = 0;
        int i = ordersMapper.deleteOrders(id);
        if(i > 0){
            j = arAccountMapper.deletcCount(id);
            if(j == 0){
                throw new MyException("级联删除失败");
            }
        }
        return j;
    }

controller层

OrdersController.java中加入

 //级联删除删除用户
    @RequestMapping("/deleteCount")
    public String deleteCount(Integer id){
        int i = ordersService.deleteCount(id);
        return "redirect:/static/accountToOrder.html";

    }

删除张三的信息可以看到删除了数据库中也没有了
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值