回顾一下上一个小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查看CPU信息计算CPU核数量

    1. 物理CPU的个数: cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l 2. 每个物理CPU的核心数量: ...

  2. SQL语句报错:You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near

    报错如图: 最开始其实我的列名tname和tsubject分别叫name和subject,后来看到网上有说这个报错可能是数据库建表的时候使用了mysql的关键词,我就只把name改了.后来还是这个问题 ...

  3. android studio下 library打包文件(.aar)和本地引用

    关键点: 利用Gradle发布本地maven库支持android library 打包文件(*.aar) 的本地引用 开发环境: windows7 64位操作系统 android studio0.5. ...

  4. Docker之网络配置

    目的: Docker网络配置   Docker部署SpringCloud项目 Docker网络配置 Docker网络模式介绍 Docker在创建容器时有四种网络模式:bridge/host/conta ...

  5. 安装macOS时遇到Unable to unmount volume for repair异常导致无法完成安装的解决办法

    方法一: 使用终端命令行制作完macos安装U盘后,务必将.IAProductInfo文件放到U盘的根目录(非EFI分区的) sudo /Applications/Install\ macOS\ Si ...

  6. IDEA下创建Spring项目

    IDEA下创建Java SE Spring项目示例 1.创建项目 第4步:是否自动创建空的Spring容器配置文件,默认文件名是spring-config.xml.勾不勾选都行,如果没勾选,后面要自己 ...

  7. mysql DML 数据插入,删除,更新,回退

    mysql插入,删除,更新地址:https://wenku.baidu.com/view/194645eef121dd36a32d82b1.html http://www.cnblogs.com/st ...

  8. 如何封装一个自己的win7系统并安装到电脑做成双系统

    说明: 目前我是刚试玩所以总结得没有很详细,先粗略放一个,下次有时间再分开整理系统封装或者如何制作双系统. 教程参考地址: 1. https://www.sysceo.com/forum/thread ...

  9. ubuntu16.04+GTX2080Ti+torch7安装记录

    环境说明 ubuntu16.04 cuda10.0 2080Ti显卡 拉取代码和修改编译脚本 拉取代码 用户先clone代码: git clone https://github.com/torch/d ...

  10. 前端cdn库推荐

    后端编程人员,有时作功能调试时会用到jquery.layer等的前端库文件,用得较多的我们可以下载下来放到自己的电脑上,有些偶尔使用一次的类库插件就没必要全都下载下来,毕竟不用的类库多了,自己找到它都 ...