回顾一下上一个小 demo 中存在的问题, 是是根据用户的 id 修改用户的密码, 我们只是修改了用户的密码, 结果我们的在写接口方法的时候掺入的参数确实一个 User 对象, 这样让别人看到我们的代码真的是很难读懂啊! 所以我们有必要对我们的代码进行改进, 说句实在话, 我个人觉得我们在写代码的时候, 不要去刻意的凸显我们自己有多门的厉害, 我的代码写的有多么的优秀, 想想, 如果你写的代码, 功能是实现了, 但是就你自己能够读懂, 别人要话费好长的时间才能看懂, 那样团队的开发效率就会大大的降低. 我觉得好的代码是大家都能够很容易上手的, 可读性要高, 可维护性要好. 才行! 靠! 说多了.
现在步入正题:
UserMapper.xml
UserMapper.java
编写测试方法:
- @Test
- public void testUpdatePwd() {
- SqlSession sqlSession = null;
- String pwd="777777";
- Integer id=21;
- int count=0;// 返回受影响的行数
- try {
- sqlSession = MyBatisUtil.createSqlSession();
- // 调用 mapper 接口的方式实现
- count= sqlSession.getMapper(UserMapper.class).updateUserPwd(id, pwd);
- // int i=1/0;// 模拟异常 后台日志打印出 rolling back 表示没有插入成功, 事务进行了回滚
- mlogger.info("返回受影响的行数:" + count);
- sqlSession.commit();// 后台日志打印出 rolling back 表示没有提交事务, 事务进行了回滚, 所以必须得提交事务才行
- } catch (Exception e) {
- // TODO: handle exception
- } finally {
- // 最后一定要注意: 关闭会话
- MyBatisUtil.closeSqlSession(sqlSession);
- }
- }
运行结果:
- BUG] 2019-11-05 21:26:37,791 org.apache.ibatis.transaction.jdbc.JdbcTransaction - Opening JDBC Connection
- [DEBUG] 2019-11-05 21:26:38,109 org.apache.ibatis.datasource.pooled.PooledDataSource - Created connection 1701693537.
- [DEBUG] 2019-11-05 21:26:38,115 cn.smbms.dao.user.UserMapper.updateUserPwd - ooo Using Connection [[email protected]]
- [DEBUG] 2019-11-05 21:26:38,118 cn.smbms.dao.user.UserMapper.updateUserPwd - ==> Preparing: update smbms_user SET userPassword=? where id=?
- [DEBUG] 2019-11-05 21:26:38,228 cn.smbms.dao.user.UserMapper.updateUserPwd - ==> Parameters: 777777(String), 21(Integer)
[INFO] 2019-11-05 21:26:38,231 cn.smbms.dao.test.UserMapperTest - 返回受影响的行数: 1
- [DEBUG] 2019-11-05 21:26:38,232 org.apache.ibatis.transaction.jdbc.JdbcTransaction - Committing JDBC Connection [[email protected]]
- [DEBUG] 2019-11-05 21:26:38,237 org.apache.ibatis.transaction.jdbc.JdbcTransaction - Resetting autocommit to true on JDBC Connection [[email protected]]
- [DEBUG] 2019-11-05 21:26:38,237 org.apache.ibatis.transaction.jdbc.JdbcTransaction - Closing JDBC Connection [[email protected]]
- [DEBUG] 2019-11-05 21:26:38,238 org.apache.ibatis.datasource.pooled.PooledDataSource - Returned connection 1701693537 to pool.
数据库查询结果:
最后, 特别要注意一点, 如果接口方法中只有一个参数, 不加注解的话, 这个参数也是能够自动匹配上的, 两个或者两个以上不加注解的话, 是会报 bindingException 异常的.
但是为了好的编码习惯, 建议大家当只有一个参数入参的时候, 也使用注解的方式. 麻烦不到哪去.
来源: http://www.bubuko.com/infodetail-3274316.html