本专栏主要是记录学习完JavaSE后学习JavaWeb部分的一些知识点总结以及遇到的一些问题等,如果刚开始学习Java的小伙伴可以点击下方连接查看专栏
本专栏地址:JavaWeb
Java入门篇: Java基础学习篇
Java进阶学习篇(持续更新中):Java进阶学习篇
本系列文章会将讲述有关于如何使用MyBatis完成增删查改的操作,预计本系列文章会有以下这些文章,在写完本系列的文章后会有一篇文章罗列这些文章以及其地址(传送门)小伙伴们直接点击查看即可
文章名称 | 文章地址 |
---|---|
查询所有数据 | 使用映射配置文件实现CRUD操作——查询所有数据 |
查询详情 | 使用映射配置文件实现CRUD操作——通过主键查询对应数据 |
使用映射配置文件实现CRUD操作——多条件查询 | |
使用映射配置文件实现CRUD操作——动态SQL优化条件查询 | |
添加数据 | 使用映射配置文件实现CRUD操作——添加数据 |
修改全部字段 | |
修改动态字段 | |
删除一条数据 | |
批量删除数据 |
文章目录
一、前言
本文会讲述有关于如何删除数据的问题,在修改数据时,有可能会修改所有数据,也有可能要修改其中的几条数据,后者需要使用动态SQL语句来实现效果,本文也将重点讲述这部分的内容
二、修改全部数据
1.BrandMapper接口
这里由于为了测试方便,能够更加直观的看出被修改的数据有多少条,所以这里不定义一个void方法了,而是用int来接收
//修改
int update(Brand brand);
2.SQL语句
修改数据,也可以成为更新数据,会使用到关键字UPDATE
,具体语法就是UPDATE 表名 SET 字段1 = 值1 ,字段2 = 值2 ··· WHERE ···
这里修改所有数据,所以需要设置表中所有字段(当然这种情况一般人会直接吧它删掉再新建,不然一个个改太麻烦了吧)
update tb_brand
set
brand_name = #{brandName},
company_name = #{companyName},
description = #{description},
status = #{status},
where id = #{id}
3.测试类
这里我们修改几个数据,然后传递进去,并提交事务,这样就可以成功修改数据了,与之前的测试类不同的是,由于这里多了一个参数id,所以在传递的时候也要把id传进去,再用一个count去接收修改的行数
//执行方法
int count = brandMapper.update(brand);
//提交事务
sqlSession.commit();
//打印结果
System.out.println(count);
三、修改动态数据
1.BrandMapper接口
这里由于为了测试方便,能够更加直观的看出被修改的数据有多少条,所以这里不定义一个void方法了,而是用int来接收
//修改
int update(Brand brand);
2.SQL语句(set标签使用)
由于我们不一定会修改全部字段,所以要用一个if标签来判断,也就是之前说的多条件动态查询,可以判断需要修改的字段具体是哪一个;同时,由于除了最后一个语句,每个语句后面都有一个逗号,如果最后一个条件不符合的话,SQL语句中就多了个逗号,如果所有的字段都不修改的话,又多了一个set
,所以为了避免这种情况,可以使用MyBatis自带的set
标签来解决这个问题
<update id="update">
update tb_brand
<set>
<if test="brandName != null and brandName != '' ">
brand_name = #{brandName},
</if>
<if test="companyName != null and brandName != '' ">
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.测试类
测试类和上面一样,这里贴出完整的测试类代码。为了对比明显,我们将第六条数据改为与第五条部分不同,看是否能修改成功
public class MyBatisTest_update {
@Test
public void update() throws IOException {
//接收参数
int status = 1;
String brandName = "戴尔";
String companyName = "美国戴尔公司";
String description = "激发人类潜能 —— 这是技术的终极意义,也是戴尔所做一切的源动力";
int ordered = 49;
int id = 6;
Brand brand = new Brand();
brand.setStatus(status);
brand.setBrandName(brandName);
brand.setCompanyName(companyName);
brand.setDescription(description);
brand.setOrdered(ordered);
brand.setId(id);
//加载MyBatis的核心配置文件,获取SqlSessionFactory
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//SqlSession获取对象
SqlSession sqlSession = sqlSessionFactory.openSession(true);
//获取BrandMapper接口代理对象
BrandMapper brandMapper= sqlSession.getMapper(BrandMapper.class);
//执行方法
int count = brandMapper.update(brand);
//提交事务
sqlSession.commit();
//打印结果
System.out.println(count);
//释放资源
sqlSession.close();
}
}
执行结果
四、结语
接下来将会讲述有关于删除数据相关知识点,有任何问题可以评论留言
文章评论