更新客户
MyBatis的更新操作在映射文件中是通过配置<update>元素来实现的。如果需要更新用户数据,可以通过如下代码配置来实现。
<!-- 更新客户信息 -->
<update id="updateCustomer" parameterType="com.itheima.po.Customer">
update t_customer set
username=#{username},jobs=#{jobs},phone=#{phone}
where id=#{id}
</update>
与插入数据的配置相比,更新操作配置中的元素与SQL语句都发生了相应变化,但其属性名却没有变。为了验证配置是否正确,下面以上一小节中新插入的数据为例,来进行更新客户测试。
在测试类MybatisTest中,添加测试方法updateCustomerTest(),将id为4的用户职业修改为“programmer”,电话修改为“13311111111”,其代码如下所示。
/**
* 更新客户
*/
@Test
public void updateCustomerTest() throws Exception{
// 1、读取配置文件
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
// 2、根据配置文件构建SqlSessionFactory
SqlSessionFactory sqlSessionFactory =
new SqlSessionFactoryBuilder().build(inputStream);
// 3、通过SqlSessionFactory创建SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
// 4、SqlSession执行更新操作
// 4.1创建Customer对象,对对象中的数据进行模拟更新
Customer customer = new Customer();
customer.setId(4);
customer.setUsername("rose");
customer.setJobs("programmer");
customer.setPhone("13311111111");
// 4.2执行SqlSession的更新方法,返回的是SQL语句影响的行数
int rows = sqlSession.update("com.itheima.mapper"
+ ".CustomerMapper.updateCustomer", customer);
// 4.3通过返回结果判断更新操作是否执行成功
if(rows > 0){
System.out.println("您成功修改了"+rows+"条数据!");
}else{
System.out.println("执行修改操作失败!!!");
}
// 4.4提交事务
sqlSession.commit();
// 5、关闭SqlSession
sqlSession.close();
}
与添加客户的方法相比,更新操作的代码增加了id属性值的设置,并调用SqlSession的update()方法对id为1客户的职业和电话进行修改。
使用JUnit4执行updateCustomerTest()方法后,控制台的输出结果如图1所示。
图1 运行结果
此时t_customer表中的数据如图2所示。
图2 t_customer表
从图2可以看出,使用MyBatis框架已经成功更新了id为4的客户信息。