MyBatis的添加和修改命令

  1. 添加

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

    在BrandMapper类添加方法

    /**
     * 添加
     */
    void add(Brand brand);

     

     

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

    结果:void

    2.编写SQL语句:SQL映射文件

    在BrandMapper.xml类添加

    <insert id="add">
    ​
        insert into tb_brand (brand_name,company_name,ordered,description,status)
        values (#{brandName},#{companyName},#{ordered},#{description},#{status});
    ​
    </insert>

     

    3.执行方法,测试

    Add方法测试

    复制代码
    @Test
    public void testAdd() throws IOException {
    ​
        //接收参数
        int status = 1;
        String companyName = "波导手机";
        String brandName = "波导";
        String description = "手机中的战斗机";
        int ordered = 100;
    ​
    ​
        //封装对象
        Brand brand = new Brand();
        brand.setStatus(status);
        brand.setCompanyName(companyName);
        brand.setBrandName(brandName);
        brand.setDescription(description);
        brand.setOrdered(ordered);
    ​
    ​
    ​
        //1.获取SqlSessionFactory
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    ​
        //2.获取SqlSession对象
        //SqlSession sqlSession = sqlSessionFactory.openSession();
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
    ​
        //3.获取Mapper接口的代理对象
        BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);
    ​
        //4.执行方法
    ​
        brandMapper.add(brand);
    ​
        //提交事务
        sqlSession.commit();
    ​
        //5.释放资源
        sqlSession.close();
    ​
    }
    复制代码

     

    MyBatis事务:

    openSession():默认开启事务,进行增删改操作后需要使用sqlSession.commit();手动提交事务

    openSession(true):可以设置为自动提交事务(关闭事务)

    添加-主键返回

    在数据添加成功后,需要获取插入数据库数据的主键

    返回添加数据的主键

    映射文件

    <insert id="add" useGeneratedKeys="true" keyProperty="id">

     

    比如:添加订单和订单项

    1.添加订单

    2.添加订单项,订单项中需要设置所属订单的id

    测试类

    复制代码
    @Test
    public void testAdd2() throws IOException {
    ​
        //接收参数
        int status = 1;
        String companyName = "波导手机";
        String brandName = "波导";
        String description = "手机中的战斗机";
        int ordered = 100;
    ​
    ​
        //封装对象
        Brand brand = new Brand();
        brand.setStatus(status);
        brand.setCompanyName(companyName);
        brand.setBrandName(brandName);
        brand.setDescription(description);
        brand.setOrdered(ordered);
    ​
    ​
    ​
        //1.获取SqlSessionFactory
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    ​
        //2.获取SqlSession对象
        //SqlSession sqlSession = sqlSessionFactory.openSession();
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
    ​
        //3.获取Mapper接口的代理对象
        BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);
    ​
        //4.执行方法
    ​
        brandMapper.add(brand);
        Integer id = brand.getId();
        System.out.println(id);
    ​
        //提交事务
        sqlSession.commit();
    ​
        //5.释放资源
        sqlSession.close();
    ​
    }
    复制代码

     

  2. 修改

    1. 修改全部自动

      1.编写接口方法Mapper接口

      参数:所有数据

      结果:void

      BrandMapper类

      /**
       * 修改
       */
      int update(Brand brand);

       

      2.编写SQL语句:SQL映射文件

      BrandMapper.xml文件

      复制代码
      <update id="update">
          update tb_brand
          set
              brand_name = #{brandName},
              company_name = #{companyName},
              ordered = #{ordered},
              description = #{description},
              status = #{status}
          where id = #{id};
      ​
      </update>
      复制代码

       

      3.执行方法测试

      测试类

      复制代码
      @Test
      public void testUpdate() throws IOException {
      ​
          //接收参数
          int status = 1;
          String companyName = "波导手机";
          String brandName = "波导";
          String description = "波导手机,手机中的战斗机";
          int ordered = 200;
          int id = 5;
      ​
      ​
          //封装对象
          Brand brand = new Brand();
          brand.setStatus(status);
          brand.setCompanyName(companyName);
          brand.setBrandName(brandName);
          brand.setDescription(description);
          brand.setOrdered(ordered);
          brand.setId(id);
      ​
      ​
      ​
          //1.获取SqlSessionFactory
          String resource = "mybatis-config.xml";
          InputStream inputStream = Resources.getResourceAsStream(resource);
          SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
      ​
          //2.获取SqlSession对象
          //SqlSession sqlSession = sqlSessionFactory.openSession();
          SqlSession sqlSession = sqlSessionFactory.openSession(true);
      ​
          //3.获取Mapper接口的代理对象
          BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);
      ​
          //4.执行方法
          int count = brandMapper.update(brand);
          System.out.println(count);
      ​
          //提交事务
          sqlSession.commit();
      ​
          //5.释放资源
          sqlSession.close();
      ​
      }
      复制代码

       

    2. 修改动态字段

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

      参数:部分数据,封装到对象中

      结果:void

      跟BrandMapper类一样没变化。

      2.编写SQL语句:SQL映射文件

      改变BrandMapper.xml的SQL语句

      复制代码
      <update id="update">
          update tb_brand
          <set>
          <if test="brandName != null and brandName != ''">
              brand_name = #{brandName},
          </if><if test="companyName != null and companyName != '' ">
              company_name = #{companyName},
          </if><if test="ordered != null">
              ordered = #{ordered},
          </if><if test="description != null and description != ''">
              description = #{description},
          </if><if test="status != null">
              status = #{status}
          </if>
          </set>
      ​
          where id = #{id};
      ​
      </update>
      复制代码

       

      3.执行方法,测试

      测试类

      复制代码
       @Test
          public void testUpdate() throws IOException {
      ​
              //接收参数
              int status = 0;
              String companyName = "波导手机";
              String brandName = "波导";
              String description = "波导手机,手机中的战斗机";
              int ordered = 200;
              int id = 6;
      ​
      ​
              //封装对象
              Brand brand = new Brand();
              brand.setStatus(status);
      //        brand.setCompanyName(companyName);
      //        brand.setBrandName(brandName);
      //        brand.setDescription(description);
      //        brand.setOrdered(ordered);
              brand.setId(id);
      ​
      ​
      ​
              //1.获取SqlSessionFactory
              String resource = "mybatis-config.xml";
              InputStream inputStream = Resources.getResourceAsStream(resource);
              SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
      ​
              //2.获取SqlSession对象
              //SqlSession sqlSession = sqlSessionFactory.openSession();
              SqlSession sqlSession = sqlSessionFactory.openSession(true);
      ​
              //3.获取Mapper接口的代理对象
              BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);
      ​
              //4.执行方法
              int count = brandMapper.update(brand);
              System.out.println(count);
      ​
              //提交事务
              sqlSession.commit();
      ​
              //5.释放资源
              sqlSession.close();
      ​
          }
      复制代码



posted @   Resign~as  阅读(135)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
点击右上角即可分享
微信分享提示