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异常的。

但是为了好的编码习惯,建议大家当只有一个参数入参的时候,也使用注解的方式。麻烦不到哪去。

posted on 2019-11-05 21:34  ~码铃薯~  阅读(450)  评论(0编辑  收藏  举报

导航