回顾一下上一个小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 [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异常的。

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

Mybatis框架-@Param注解的更多相关文章

  1. 关于Mybatis的@Param注解 及 mybatis Mapper中各种传递参数的方法

    原文:https://blog.csdn.net/mrqiang9001/article/details/79520436 关于Mybatis的@Param注解   Mybatis 作为一个轻量级的数 ...

  2. MyBatis 中 @Param 注解的四种使用场景,最后一种经常被人忽略!

    有一些小伙伴觉得 MyBatis 只有方法中存在多个参数的时候,才需要添加 @Param 注解,其实这个理解是不准确的.即使 MyBatis 方法只有一个参数,也可能会用到 @Param 注解. 但是 ...

  3. mybatis之Param注解

    一.作用 使用@Param注解表示给参数命名,名称就是括号中的内容.给参数命名,然后在映射文件中就能根据名称获取参数值了.在mybatis中我们常常要使用到多个参数,但是在xml中的parameter ...

  4. 关于mybatis的@Param注解和参数

    1,使用@Param注解 当以下面的方式进行写SQL语句时: @Select("select column from table where userid = #{userid} " ...

  5. MyBatis 中 @Param 注解的四种使用场景

    https://juejin.im/post/6844903894997270536 第一种:方法有多个参数,需要 @Param 注解 第二种:方法参数要取别名,需要 @Param 注解 第三种:XM ...

  6. Mybatis框架基于注解的方式,实对数据现增删改查

    编写Mybatis代码,与spring不一样,不需要导入插件,只需导入架包即可: 在lib下 导入mybatis架包:mybatis-3.1.1.jarmysql驱动架包:mysql-connecto ...

  7. MyBatis框架之注解开发

    MyBatis注解开发 @Insert注解注解属性value:写入SQL语句 @Options注解实现添加新数据的主键封装注解属性useGeneratedKeys:使用生成的主键,配置为truekey ...

  8. 阶段3 1.Mybatis_04.自定义Mybatis框架基于注解开发_3 基于注解的自定义再分析

    这里只需要 一是连接数据库的 二是映射的 注解是class的方式  dom4j技术获取xml的数据,这是xml的方式获取的下面几个关键的点 注解的方式回去dao类里面的几个主要的信息 User黄色的部 ...

  9. 阶段3 1.Mybatis_04.自定义Mybatis框架基于注解开发_2 回顾自定义mybatis的流程分析

随机推荐

  1. 【转帖】Linux命令行操作json神器jq

    Linux命令行操作json神器jq https://www.cnblogs.com/chenqionghe/p/11736942.html jq类似一个awk或grep一样的神器,可以方便地在命令行 ...

  2. 文件和异常练习——python编程从入门到实践

    10-1 Python学习笔记:在文本编辑器中新建一个文件,写几句话来总结一下你至此学习到的python知识,其中每一行都以“In Python you can”打头.将这和文件命名为learning ...

  3. 异常处理和UDP Socket套接字

    一.异常处理 1.什么是异常处理: 程序在运行过程中出现了不可预知的错误,并且该错误没有对应的处理机制,那么就会以异常的形式表达出来,造成的影响就是整个程序无法再正常进行. 2.异常的结构: 1.异常 ...

  4. Python之路【第二十八篇】:django视图层、模块层

    1.视图函数 文件在view_demo 一个视图函数简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XM ...

  5. 关于一致性hash,这可能是全网最形象生动最容易理解的文档,想做架构师的你来了解一下

    问题提出 一致性hash是什么?假设有4台缓存服务器N0,N1,N2,N3,现在需要存储数据OBJECT1,OBJECT2,OBJECT3,OBJECT4,OBJECT5,OBJECT5,OBJECT ...

  6. 前端调试代码 chrom 和 火狐禁用缓存 Disabled cache

    前端调试的时候经常遇到缓存问题, chrome : f12  ---> 找到 Disabled caceh 勾上 火狐: f12 找到 禁用缓存

  7. 线程池及Executor框架

    1.为什么要使用线程池? ​ 诸如 Web 服务器.数据库服务器.文件服务器或邮件服务器之类的许多服务器应用程序都面向处理来自某些远程来源的大量短小的任务.请求以某种方式到达服务器,这种方式可能是通过 ...

  8. 让js中的函数只有一次有效调用

    设置隐藏域~ <input type="hidden" value="1" id="flag" /> 其它三种方法

  9. SSO实现机制

    引言 单点登录有许多开发商提供解决方案,本文以yale大学SSO开源项目CAS为例,介绍单点登录实现机制. 术语解释 SSO-Single Sign On,单点登录 TGT-Ticket Granti ...

  10. 【WEB基础】HTML & CSS 基础入门(1)初识

    前面 我们每天都在浏览着网络上丰富多彩的页面,那么在网页中所呈现出的绚丽多彩的内容是怎么设计出来的呢?我们想要自己设计一个页面又该如何来做呢?对于刚刚接触网页设计的小伙伴来说,看到网页背后的一堆符号和 ...