Mybatis框架-@Param注解
回顾一下上一个小demo中存在的问题,是是根据用户的id修改用户的密码,我们只是修改了用户的密码,结果我们的在写接口方法的时候掺入的参数确实一个User对象,这样让别人看到我们的代码真的是很难读懂啊!所以我们有必要对我们的代码进行改进,说句实在话,我个人觉得我们在写代码的时候,不要去刻意的凸显我们自己有多门的厉害,我的代码写的有多么的优秀,想想,如果你写的代码,功能是实现了,但是就你自己能够读懂,别人要话费好长的时间才能看懂,那样团队的开发效率就会大大的降低。我觉得好的代码是大家都能够很容易上手的,可读性要高,可维护性要好。才行!靠!说多了。
现在步入正题:
UserMapper.xml
UserMapper.java
编写测试方法:
1 @Test 2 public void testUpdatePwd() { 3 SqlSession sqlSession = null; 4 String pwd="777777"; 5 Integer id=21; 6 int count=0;//返回受影响的行数 7 try { 8 sqlSession = MyBatisUtil.createSqlSession(); 9 //调用mapper接口的方式实现 10 count= sqlSession.getMapper(UserMapper.class).updateUserPwd(id, pwd); 11 // int i=1/0;//模拟异常 后台日志打印出rolling back表示没有插入成功,事务进行了回滚 12 mlogger.info("返回受影响的行数:" + count); 13 sqlSession.commit();//后台日志打印出rolling back表示没有提交事务,事务进行了回滚,所以必须得提交事务才行 14 } catch (Exception e) { 15 // TODO: handle exception 16 } finally { 17 // 最后一定要注意:关闭会话 18 MyBatisUtil.closeSqlSession(sqlSession); 19 20 } 21 22 }
运行结果:
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 [com.mysql.jdbc.JDBC4Connection@656dc861] [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 [com.mysql.jdbc.JDBC4Connection@656dc861] [DEBUG] 2019-11-05 21:26:38,237 org.apache.ibatis.transaction.jdbc.JdbcTransaction - Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@656dc861] [DEBUG] 2019-11-05 21:26:38,237 org.apache.ibatis.transaction.jdbc.JdbcTransaction - Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@656dc861] [DEBUG] 2019-11-05 21:26:38,238 org.apache.ibatis.datasource.pooled.PooledDataSource - Returned connection 1701693537 to pool.
数据库查询结果:
最后,特别要注意一点,如果接口方法中只有一个参数,不加注解的话,这个参数也是能够自动匹配上的,两个或者两个以上不加注解的话,是会报bindingException异常的。
但是为了好的编码习惯,建议大家当只有一个参数入参的时候,也使用注解的方式。麻烦不到哪去。