您当前的位置: 首页 >  mybatis

杨林伟

暂无认证

  • 2浏览

    0关注

    3337博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

62MyBatis - set元素

杨林伟 发布时间:2019-04-12 10:44:00 ,浏览量:2

在Hibernate中,如果想要更新某一个对象,就需要发送所有的字段给持久化对象,然而实际应用中,大多数情况下都是更新的某一个或几个字段。如果更新的每一条数据都要将其所有的属性都更新一遍,那么其执行效率是非常差的。

有没有办法让程序只更新需要更新的字段呢?

为了解决上述情况中的问题,MyBatis中提供了< set>元素来完成这一工作。 < set>元素主要用于更新操作,其主要作用是在动态包含的SQL语句前输出一个SET关键字,并将SQL语句中最后一个多余的逗号去除。

代码


    update t_customer

    
        
            username=#sername,
        
        
            jobs=#{jobs},
        
        
            phone=#{phone},
        
    
    
    where id=#{id}


在上述配置的SQL语句中,使用了< set>和< if>元素相结合的方式来组装update语句。 其中< set>元素会动态前置SET关键字,同时也会消除SQL语句中最后一个多余的逗号; < if>元素用于判断相应的字段是否传入值,如果传入的更新字段非空,就将此字段进行动态 SQL 组装,并更新此字段,否则此字段不执行更新。

测试
/**
     * 更新客户
     */
    @Test
    public void updateCustomerTest() {
        // 获取SqlSession
        SqlSession sqlSession = MybatisUtils.getSession();
        
        // 创建Customer对象,并向对象中添加数据
        Customer customer = new Customer();
        customer.setId(3);
        customer.setPhone("13311111234");
        
        // 执行SqlSession的更新方法,返回的是SQL语句影响的行数
        int rows = sqlSession.update("com.itheima.mapper"
                + ".CustomerMapper.updateCustomer", customer);
        
        // 通过返回结果判断更新操作是否执行成功
        if (rows > 0) {
            System.out.println("您成功修改了" + rows + "条数据!");
        } else {
            System.out.println("执行修改操作失败!!!");
        }

        //提交事务
        sqlSession.commit();
        // 关闭SqlSession
        sqlSession.close()
    }

效果图: 在这里插入图片描述

关注
打赏
1662376985
查看更多评论
立即登录/注册

微信扫码登录

0.1273s