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
ssm综合练习第三阶段_第1张图片
输入信息保存也可以查看数据库可以看到两个表都多了一条数据
ssm综合练习第三阶段_第2张图片

级联删除

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

  $.get("/ordersController/findArAccountToOrder",function (data) {
                $.each(data,function (index,obj) {
                    var tr = ""+obj.id+""+obj.username+""+obj.money+"" +
                            "删除"+

先看看效果访问页面

ssm综合练习第三阶段_第3张图片

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

    }

删除张三的信息可以看到删除了数据库中也没有了
ssm综合练习第三阶段_第4张图片

你可能感兴趣的:(ssm,ssm综合)