Day 80

本文介绍了如何在Mybatis中通过Mapper接口完成品牌数据的添加和修改操作,关注了主键自增问题的处理,包括如何重新定义id序列。通过实例展示了如何获取新插入数据的主键,并演示了如何更新数据库中的数据。
摘要由CSDN通过智能技术生成

_查询-单条件-动态查询

  1. 从多个条件中选择一个

  2. choose(when,otherwise): 选择,类似于java中的switch语句

  3. 在这里插入图片描述

  4. 在这里插入图片描述

_配置文件完成增删改查

  1. 编写接口方法:Mapper接口

  2. 参数:除了id之外的所有数据

  3. 结果:void

  4. 编写sql语句:sql映射文件

  5. 执行方法,测试

    • Mybatis事务:
    • openSession():默认开启事务,进行增删改操作之后需要使用sqlSession.commit();手动提交事务
    • openSession(true):可以设置为自动提交事务(关闭事务)
  6. 在这里插入图片描述

  7. 在这里插入图片描述

  8. 此时注意:在添加数据的时候如果之前有数据库表中的数据删除过,那么所添加的信息的主键id将会继承之之前被删除的数据的主键的id序号并且继续自增;

    • 解决方法:在图形化工具中,或者是控制台重新定义当前所要添加的主键序列号

    • -- 修改id自增排序
      alter table tb_brand auto_increment = 4; -- 此时的主键id序列就被改为了4,即下一条数据的主键id为4
      
  9. 在这里插入图片描述

  10. public void dataAdd() {
            int status = 0;
            String brand_name = "8848钛金手机";
            String address = "北京";
            int ordered = 20;
    
            // 封装参数
            Brand brand = new Brand();
            brand.setStates(status);
            brand.setName(brand_name);
            brand.setAddress(address);
            brand.setOrdered(ordered);
            InputStream is = null;
            try {
                is = Resources.getResourceAsStream("mybatis-config.xml");
                SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
                SqlSessionFactory sf = sqlSessionFactoryBuilder.build(is);
                SqlSession sqlSession = sf.openSession(true);
                // 获取mapper接口
                BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);
    
                // 执行sql语句
                mapper.add(brand);
    //            List<Brand> result = mapper.selectByCondition(status, brand_name, address);
                // 返回执行结果
    
                // 释放资源
                sqlSession.close();
    
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    ============================================================
    
    Process finished with exit code 0
    
  11. 执行结果为:在这里插入图片描述

_添加数据的同时返回添加数据的主键

  1. 返回数据的主键只用在xml文件中设定两个值就行:
    在这里插入图片描述2. 其他的都和正常的数据添加一样,由此查询的结果为:
  •  public void dataAdd() {
             int status = 0;
             String brand_name = "8848钛金手机";
             String address = "北京";
             int ordered = 20;
     
             // 封装参数
             Brand brand = new Brand();
             brand.setStates(status);
             brand.setName(brand_name);
             brand.setAddress(address);
             brand.setOrdered(ordered);
             InputStream is = null;
             try {
                 is = Resources.getResourceAsStream("mybatis-config.xml");
                 SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
                 SqlSessionFactory sf = sqlSessionFactoryBuilder.build(is);
                 SqlSession sqlSession = sf.openSession(true);
                 // 获取mapper接口
                 BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);
     
                 // 执行sql语句
                 mapper.add(brand);
     //            List<Brand> result = mapper.selectByCondition(status, brand_name, address);
     
                 // 返回执行结果-->得到id的值
                 Integer id = brand.getId();
     
                 // 将得到的id输出再控制面板
                 System.out.println("执行的对象的id为:"+id);
     
                 // 释放资源
                 sqlSession.close();
     
             } catch (IOException e) {
                 e.printStackTrace();
             } finally {
                 try {
                     is.close();
                 } catch (IOException e) {
                     e.printStackTrace();
                 }
             }
         }
     =======================================================
     执行的对象的id为:6
     
     Process finished with exit code 0
    

在这里插入图片描述

_修改数据库中的数据

  1. 在mapper接口文件中定义update方法:在这里插入图片描述

  2. 在xml文件中映射接口文件:在这里插入图片描述

  3. 在test文件中编写java代码实现修改数据的sql:

    •     // 修改数据库中的数据
          public void update() {
              int status = 0;
              String brand_name = "智能老人机";
              String address = "北京";
              int ordered = 100;
              int id = 4;
      
              // 封装参数
              Brand brand = new Brand();
              brand.setId(id);
              brand.setStates(status);
              brand.setName(brand_name);
              brand.setAddress(address);
              brand.setOrdered(ordered);
      
              InputStream is = null;
              try {
                  is = Resources.getResourceAsStream("mybatis-config.xml");
                  SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
                  SqlSessionFactory sf = sqlSessionFactoryBuilder.build(is);
                  SqlSession sqlSession = sf.openSession(true);
      
                  // 获取mapper接口
                  BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);
                  int result = mapper.update(brand);
      
                  // 控制台返回执行结果
                  System.out.println("结果为:"+result);
      
                  // 释放资源
                  sqlSession.close();
      
              } catch (IOException e) {
                  e.printStackTrace();
              }finally {
                  try {
                      is.close();
                  } catch (IOException e) {
                      e.printStackTrace();
                  }
              }
          }
      ============================================
      结果为:1
      
      Process finished with exit code 0
      
    • 在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值