Mybatis框架-resultMap元素的自动映射级别
resultMap的自动映射级别:分为三种:NONE PARTIAL FULL
其中默认的属性是:PARTIAL:开启自动匹配,会自动匹配数据库中的字段名和实体类中的属性名,如果一致,就能匹配上,如果不一致,就不能进行匹配
mybatis-config.xml
UserMapper.xml
UserMapper.java
编写测试方法:
- @Test
- public void test9() {
- Map<String, String> map = new HashMap<String, String>();
- map.put("userName1", "赵");
- map.put("userRole1", "3");
- SqlSession sqlSession = null;
- java.util.List<User> userList2 = new ArrayList<User>();
- try {
- sqlSession = MyBatisUtil.createSqlSession();
- //使用mapper映射的方式实现
- //userList2 = sqlSession.selectList("cn.smbms.dao.user.UserMapper.getUserListByUserName",userNameString);
- //调用mapper接口的方式实现
- userList2 = sqlSession.getMapper(UserMapper.class).getUserListByUserName5(map);
- int size = userList2.size();
- mlogger.info("获取到的记录数是:" + size);
- } catch (Exception e) {
- // TODO: handle exception
- } finally {
- // 最后一定要注意:关闭会话
- MyBatisUtil.closeSqlSession(sqlSession);
- }
- for (User user2 : userList2) {
- mlogger.info("用户名:" + user2.getUserName() + ",密码:" + user2.getUserPassword()+",用户角色:"+user2.getUserRoleName()+"地址:"+user2.getAddress());
- }
- }
运行结果:
- [DEBUG] 2019-11-04 22:27:39,810 cn.smbms.dao.user.UserMapper.getUserListByUserName5 - ==> Preparing: select a.*,r.roleName from smbms_user a,smbms_role r where username like CONCAT ('%',?,'%') and userRole = ? and a.userRole=r.id
- [DEBUG] 2019-11-04 22:27:39,990 cn.smbms.dao.user.UserMapper.getUserListByUserName5 - ==> Parameters: 赵(String), 3(String)
- [INFO] 2019-11-04 22:27:40,099 cn.smbms.dao.test.UserMapperTest - 获取到的记录数是:1
- [DEBUG] 2019-11-04 22:27:40,099 org.apache.ibatis.transaction.jdbc.JdbcTransaction - Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@3caa4b]
- [DEBUG] 2019-11-04 22:27:40,099 org.apache.ibatis.transaction.jdbc.JdbcTransaction - Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@3caa4b]
- [DEBUG] 2019-11-04 22:27:40,099 org.apache.ibatis.datasource.pooled.PooledDataSource - Returned connection 3975755 to pool.
- [INFO] 2019-11-04 22:27:40,099 cn.smbms.dao.test.UserMapperTest - 用户名:赵燕,密码:0000000,用户角色:普通员工地址:北京市海淀区回龙观小区10号楼
如果不想进行自动匹配,只需设置autoMappingBehavior的属性值为NONE,就把自动匹配的功能关掉了
mybatis-config.xml
UserMapper.xml
UserMapper.java
编写测试方法:
- @Test
- public void test9() {
- Map<String, String> map = new HashMap<String, String>();
- map.put("userName1", "赵");
- map.put("userRole1", "3");
- SqlSession sqlSession = null;
- java.util.List<User> userList2 = new ArrayList<User>();
- try {
- sqlSession = MyBatisUtil.createSqlSession();
- //使用mapper映射的方式实现
- //userList2 = sqlSession.selectList("cn.smbms.dao.user.UserMapper.getUserListByUserName",userNameString);
- //调用mapper接口的方式实现
- userList2 = sqlSession.getMapper(UserMapper.class).getUserListByUserName5(map);
- int size = userList2.size();
- mlogger.info("获取到的记录数是:" + size);
- } catch (Exception e) {
- // TODO: handle exception
- } finally {
- // 最后一定要注意:关闭会话
- MyBatisUtil.closeSqlSession(sqlSession);
- }
- for (User user2 : userList2) {
- mlogger.info("用户名:" + user2.getUserName() + ",密码:" + user2.getUserPassword()+",用户角色:"+user2.getUserRoleName()+"地址:"+user2.getAddress());
- }
- }
运行结果:
- [DEBUG] 2019-11-04 22:36:38,393 cn.smbms.dao.user.UserMapper.getUserListByUserName5 - ==> Preparing: select a.*,r.roleName from smbms_user a,smbms_role r where username like CONCAT ('%',?,'%') and userRole = ? and a.userRole=r.id
- [DEBUG] 2019-11-04 22:36:38,623 cn.smbms.dao.user.UserMapper.getUserListByUserName5 - ==> Parameters: 赵(String), 3(String)
- [INFO] 2019-11-04 22:36:38,742 cn.smbms.dao.test.UserMapperTest - 获取到的记录数是:1
- [DEBUG] 2019-11-04 22:36:38,742 org.apache.ibatis.transaction.jdbc.JdbcTransaction - Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@ed0220c]
- [DEBUG] 2019-11-04 22:36:38,742 org.apache.ibatis.transaction.jdbc.JdbcTransaction - Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@ed0220c]
- [DEBUG] 2019-11-04 22:36:38,742 org.apache.ibatis.datasource.pooled.PooledDataSource - Returned connection 248521228 to pool.
- [INFO] 2019-11-04 22:36:38,752 cn.smbms.dao.test.UserMapperTest - 用户名:赵燕,密码:null,用户角色:普通员工地址:null
Mybatis框架-resultMap元素的自动映射级别的更多相关文章
- mybatis框架-resultMap的自动映射级别-partial 和full的探讨
现在我们做一个小实验,输出一下上一个案例中没有匹配的属性,注意哦,现在user类中是有内部嵌套的复杂数据类型的 运行结果: 注意到:现在居然连userPassword都打印不出来了,原因就是user类 ...
- Mybatis的模糊查询以及自动映射
Mybatis的模糊查询 1. 参数中直接加入%% ? 1 2 3 4 5 6 7 8 9 param.setUsername("%CD%"); param.setP ...
- MyBatis框架-ResultMap节点
需求:查询结果要求显示用户名,用户密码,用户的角色 因为在用户表中只有用户角色码值,没有对应的名称,角色名称是在码表smbms_role表中,这时我们就需要联表查询了. 之前我们使用的是给查询结果字段 ...
- Mybatis框架基础入门(五)--输入映射和输出映射
1.parameterType(输入类型) 1.1 传递简单类型 使用#{}占位符,或者${}进行sql拼接. <select id="caseCountByQueryCaseVo&q ...
- Mybatis 配置resultMap一对多关联映射
resultMap配置: 引用: PO类: 接口: 测试: public class UserMapperTest { private SqlSessionFactory sqlSessionFact ...
- Mybatis映射文件的自动映射与手动映射问题
Mapper XML 文件 MyBatis 的真正强大在于它的映射语句,也是它的魔力所在.由于它的异常强大,映射器的 XML 文件就显得相对简单.如果拿它跟具有相同功能的 JDBC 代码进行对比,你会 ...
- MyBatis框架之SQL映射和动态SQL
使用MyBatis实现条件查询 1.SQL映射文件: MyBatis真正的强大之处就在于SQL映射语句,MyBatis专注于SQL,对于开发人员来说也是极大限度的进行SQL调优,以保证性能.下面是SQ ...
- 【Java】关于MyBatis框架的总结
最近在学习MyBatis框架,我在这里记录一下学习MyBatis过程中的心得体会. Mybatis是什么?使用它我们可以做什么? MyBatis是一个开源的数据持久层框架,它内部封装了通过JDBC访问 ...
- 关于mybatis框架的总结【转载】
原文地址:https://www.cnblogs.com/xiaotie666/p/LiujinMybatisSummary.html 此文为转载.请支持原作者. 最近在学习MyBatis框架,我在这 ...
随机推荐
- phpmyadmin 显示被隐藏的表
点击后,会把这个表隐藏掉.有时候误点会莫名其妙. 点击数据库上的眼睛,能够显示被隐藏的表.
- vue 在发送axios请求时数据渲染问题
这是我请求的json格式的数据 一开始在vue用普通的数据渲染,更改为vue后使用v-for 发现没办法渲染上去了. obj.data就是以上数据. 必须加上这三行给this随意赋个值,神奇的事情就会 ...
- thinkphp5 模板url标签 跟javascript ajax 的 url 参数 被莫名替换
发现一个 thinkphp5 的小bug 我用的是 thinkphp5.0.24 版本 在模板标签里 原来的大U函数 被改成url 那么问题来了 在javascript里 这样写 标签很容 ...
- day09——初识函数
day09 函数的定义 # len() s = 'alexdsb' count = 0 for i in s: count += 1 print(count) s = [1,2,23,3,4,5,6] ...
- jenkins+springboot+maven多模块部署
一.jenkins的安装配置 1.去官网下载war包,这种方式比较简单方便 java -jar jenkins.war --httpPort=49001 2.首次运行有一个key放在服务器上需要你填入 ...
- Ubuntu 编译安装 qt-opensource 5.9
平台 :Ubuntu 18.04 QT版本 :5.9.1 (open source) g++ : 7.3.0arm-gcc :4.8.1 qt 需要 gcc4.8版本以上 下载解压,进入对应的 ...
- lsyncd实时同步工具
简介 Lysncd 实际上是lua语言封装了 inotify 和 rsync 工具,采用了 Linux 内核(2.6.13 及以后)里的 inotify 触发机制,然后通过rsync去差异同步,达到实 ...
- C# vb .net实现透视图效果滤镜
在.net中,如何简单快捷地实现Photoshop滤镜组中的透视图效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第一 ...
- C# vb .net实现透视阴影特效滤镜
在.net中,如何简单快捷地实现Photoshop滤镜组中的透视阴影特效效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 ...
- 常用正则表达式和一些demo
一.校验数字的表达式 数字:^[0-9]*$ n位的数字:^\d{n}$ 至少n位的数字:^\d{n,}$ m-n位的数字:^\d{m,n}$ 零和非零开头的数字:^(0|[1-9][0-9]*)$ ...