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元素的自动映射级别的更多相关文章

  1. mybatis框架-resultMap的自动映射级别-partial 和full的探讨

    现在我们做一个小实验,输出一下上一个案例中没有匹配的属性,注意哦,现在user类中是有内部嵌套的复杂数据类型的 运行结果: 注意到:现在居然连userPassword都打印不出来了,原因就是user类 ...

  2. Mybatis的模糊查询以及自动映射

    Mybatis的模糊查询 1.  参数中直接加入%% ? 1 2 3 4 5 6 7 8 9 param.setUsername("%CD%");       param.setP ...

  3. MyBatis框架-ResultMap节点

    需求:查询结果要求显示用户名,用户密码,用户的角色 因为在用户表中只有用户角色码值,没有对应的名称,角色名称是在码表smbms_role表中,这时我们就需要联表查询了. 之前我们使用的是给查询结果字段 ...

  4. Mybatis框架基础入门(五)--输入映射和输出映射

    1.parameterType(输入类型) 1.1 传递简单类型 使用#{}占位符,或者${}进行sql拼接. <select id="caseCountByQueryCaseVo&q ...

  5. Mybatis 配置resultMap一对多关联映射

    resultMap配置: 引用: PO类: 接口: 测试: public class UserMapperTest { private SqlSessionFactory sqlSessionFact ...

  6. Mybatis映射文件的自动映射与手动映射问题

    Mapper XML 文件 MyBatis 的真正强大在于它的映射语句,也是它的魔力所在.由于它的异常强大,映射器的 XML 文件就显得相对简单.如果拿它跟具有相同功能的 JDBC 代码进行对比,你会 ...

  7. MyBatis框架之SQL映射和动态SQL

    使用MyBatis实现条件查询 1.SQL映射文件: MyBatis真正的强大之处就在于SQL映射语句,MyBatis专注于SQL,对于开发人员来说也是极大限度的进行SQL调优,以保证性能.下面是SQ ...

  8. 【Java】关于MyBatis框架的总结

    最近在学习MyBatis框架,我在这里记录一下学习MyBatis过程中的心得体会. Mybatis是什么?使用它我们可以做什么? MyBatis是一个开源的数据持久层框架,它内部封装了通过JDBC访问 ...

  9. 关于mybatis框架的总结【转载】

    原文地址:https://www.cnblogs.com/xiaotie666/p/LiujinMybatisSummary.html 此文为转载.请支持原作者. 最近在学习MyBatis框架,我在这 ...

随机推荐

  1. static示例

    求生成对象的个数 class A{ private int i; private static int cnt = 0; //此处用static修饰,让cnt属于类,多个对象共用一个属性,减少内存分配 ...

  2. docker安装指定版本nexus3

    安装maven私服 1 下载指定版本的镜像  docker  pull  sonatype/nexus3:3.18.1 2 宿主机创建一个映射目录 ,并设置所有者 mkdir  -p  /app/ne ...

  3. javascript中 for in 、for 、forEach 、for of 、Object.keys().

    一 .for ..in 循环 使用for..in循环时,返回的是所有能够通过对象访问的.可枚举的属性,既包括存在于实例中的属性,也包括存在于原型中的实例.这里需要注意的是使用for-in返回的属性因各 ...

  4. 以Unicode(UTF-16 LE)编码保存文本

    1. 以二进制方式打开文件,写入BOM头 FILE* pFile = nullptr; _wfopen_s(&pFile, szLogFilePath, L"wb"); / ...

  5. STL源码剖析——序列式容器#3 Deque

    Deque是一种双向开口的连续线性空间.所谓的双向开口,就是能在头尾两端分别做元素的插入和删除,而且是在常数的时间内完成.虽然Vector也可以在首端进行元素的插入和删除(利用insert和erase ...

  6. JS实现简单的图片透明度循环变化(渐变)

    找了好多,都是由100到0就结束了,到头来自己魔改,以下就是源码. div中加入img,js添加函数,完事(调用),取名后面加个1是为了避免冲突 <!DOCTYPE HTML> <h ...

  7. Golang转义字符

    Golang常见的转义字符(escape char) \t    一个制表位,实现对齐的功能 \n   换行符 \\    一个\ \"    一个" \r    一个回车  fm ...

  8. Array : 数组的常用方法

    数组常用方法 对象通用方法 1.toLocalString()  数组中的每个元素都会调用toLocalString(),然后以逗号隔开, 拼接为字符串: 2.toString() 数组中的每个元素都 ...

  9. Fiddler的使用总结

    关于Fiddler的使用过程中的总结: 1. 配置手机抓包的过程,以后再补充 2.使用Fiddler发送请求 1) 第一步 抓取接口,获取请求方式,以及请求参数  2) 第二步 请求接口 点击Exec ...

  10. Hive 系列(三)—— Hive CLI 和 Beeline 命令行的基本使用

    一.Hive CLI 1.1 Help 使用 hive -H 或者 hive --help 命令可以查看所有命令的帮助,显示如下: usage: hive -d,--define <key=va ...