先看select标签的属性:

说几点:

resultType和resultMap都是用来表示结果集的类型的,resultType用于简单的HashMap或者是简单的pojo对象,而resultSet是用于比较复杂的对象映射。

现在来研究一下这个传入参数:

这里讲传入参数的两种形式,一种是hashmap,一种是对象

看这个sql语句:

<select id="loginSelect" resultType="JikeUser"  parameterType=""hashmap>
select * from JikeUser where userName=#{userName} and password=#{password}
</select>

这个sql语句的id是loginSelect,返回类型是对象JikeUser,传入参数的类型是hashmap,但是可以看到,这里明明要两个参数啊,一个userName,一个password

然后我们来测试:(这里也会看到,这个resultType的值没有用完整的路径名,这是采用了简写机制,就是为类起了个别名,这个操作在基本配置文件用typeAliases来标识)

HashMap<String,String> hm = new HashMap();
hm.put("userName","JIkeBen");
hm.put("password","1111");
JikeUser oneTemp = session.selectOne("loginSelect",hm);

这里两个元素,一个键是userName,一个键是password,同时也是我们参数的名称,就是sql#{userName},而hashmap里的值就是我们要传入sql语句的相关信息。

也就是说,传入一个hashmap后sql会自己找到相应的键,传入相应的值。

parameterType还可以设置为对象,当传入一个对象的时候,mybatis会自动完成对象的属性到sql语句参数的自动匹配,只有在一致的情况下,它才可以自动的匹配。 然后返回的对象也可以设置为对象,这里也需要一个匹配的过程,也就是从数据库表的  列名   到   对象属性的匹配。  如果列名和对象的属性不一致的话,有两种方法,一种是采用resultMap的形式,很灵活;另一种是为sql语句中的列名起一个别名,这个别名和对象属性一致就行了。

刚刚我们都只是获得一个结果,那么如果是多个结果,获得多个对象呢?

如果返回多行记录的话,Mybatis会自动把它封装成一个list

<select id="selectJiKeUserList" resultType="JiKeUser">
select * from JiKeUser
</select>
List<JiKeUser> ap  = session.selectList("selectJiKeUserList");

下面讲一下resultMap,这也是一个返回操作的设定,但这个和resultType只能有一个成立。

resultMap可以解决一些比较复杂的映射关系,比如对象当中含有另一个对象的引用,首先要使用的话要设定一个resultMap标签

<resultMap id="JiKeUserMap" type="JiKeUser">

    //指定对象的属性,到列名之间的关系关系,下面几个也都是
<id property="id" colum="id"/>
<result property="userName" colum="userName"/>
<result property="password" colum-"password"/>
</resultMap>

这里我么的类名和属性名是一致的,如果不一致,也可以在map当中设定这样的一个匹配关系。

然后再使用的时候,要在sql语句中说明resultMap是哪一个

<select id="selectUsers" resultMap="JiKeUserMap">
select id,userName,password from JiKeUser
</select>

Mybatis查询select操作的更多相关文章

  1. Mybatis查询select 传单个参数不识别,找不到

    今天, Mybatis查询select 传单个参数不识别,找不到 解决办法: 加上jdbc=varchar #{XXX,jdbc=VARCHAR}

  2. MySQL和mybatis查询相关

    0.mybatis的xml文件头 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapp ...

  3. springmvc+mybatis+redis实现查询插入操作

    最近在学习redis,虽然现在还不是很熟练.不过可以进行简单的框架整合开发. IDE:我使用的是IDEA.springmvc+spring+mybatis的整合这个我就不多说了,下面我们先进行这块的整 ...

  4. 【mybatis】【mysql】mybatis查询mysql,group by分组查询报错:Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column

    mybatis查询mysql,group by分组查询报错:Expression #1 of SELECT list is not in GROUP BY clause and contains no ...

  5. 稀疏数据压缩查询方法:Rank & Select 操作

    1.稀疏数据的例子 对于网络图对应的节点关联矩阵.数据生成的哈希表等,这些存储起来是稀疏的,这样我们就会想到需要压缩空间.但是在压缩存储空间的同时,还要支持高效的查询操作. Rank & Se ...

  6. Mybatis的select查询的三种方式

    1.首先建立一个测试的dao public interface IStudentDao { // 根据姓名查询 List<Student> selectStudentsByName(Str ...

  7. MyBatis 查询

    User.java package com.mycom.mybatis_1.bean; import java.io.Serializable; public class User implement ...

  8. mybatis查询语句的背后

    转载请注明出处... 一.前言 在先了解mybatis查询之前,先大致了解下以下代码的为查询做了哪些铺垫,在这里我们要事先了解,myabtis会默认使用DefaultSqlSessionFactory ...

  9. mybatis查询语句的背后之参数解析

    转载请注明出处... 一.前言 通过前面我们也知道,通过getMapper方式来进行查询,最后会通过mapperMehod类,对接口中传来的参数也会在这个类里面进行一个解析,随后就传到对应位置,与sq ...

随机推荐

  1. Office WORD如何去掉目录的背景灰色

    有人说鼠标点击空白的地方灰色就自动散掉了,但是我点击并没有散掉 鼠标选中有灰色背景的文字,点击格式-边框和底纹,点击无填充颜色,并应用于文字. O了

  2. 使用vscode 编译 sass

    由于我在工作中用的编辑器是 vscode ,所以记录一下vscode 编译sass 的配置 vs code 编译saass 1.在扩展里搜索“easy sass”,直接进行安装即可 2.安装后默认已经 ...

  3. POJ 1936 All in All(串)

    All in All Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 27537 Accepted: 11274 Descript ...

  4. 启动两个Tomcat的方法

     由于项目需要,所以要启动两个工程,但是又不能用一个Tomcat,于是就琢磨起了怎么启动两个Tomcat 1:首先,conf/server.xml要把HTTP的端口改成不一致的,我一个是8088,一个 ...

  5. 关于axis2.1.6与websphere7的包冲突问题的解决方式

    1,复制axis2.1.6内的module目录内的全部文件到lib 并改动扩展名为.jar 2,删除module目录(可选,不删除也能够) 3,部署到was 4,设置was相应应用程序的类载入方案为父 ...

  6. BLE广播数据的抓包解析

    前言: 报文由数据字节组成同时是按比特传输的,这就免不了牵涉到字节序的问题. 对于各个字节的传输,总是从最低位开始传输.如0x80是按00000001发送的,0x01是按10000000发送的. 同时 ...

  7. 强类型的HTML模板方法与直接显示模型

    模型: public class Article { [Display(Name="文章")] public string ArticleID { get; set; } [Dis ...

  8. VScode相关

    这就是我想要的 VSCode 插件! VS Code 快捷键(中英文对照版) visual studio code 配置vue开发环境 vscode 这样的注释怎么生成? 能让你开发效率翻倍的 VSC ...

  9. ExtJS Form

    form表单中多选框和复选框 Ext.require([ 'Ext.form.*', 'Ext.layout.container.Column', 'Ext.window.MessageBox', ' ...

  10. E20180318-hm

    Scalability 可扩展性 scale  n. 规模; 比例(尺); 鱼鳞; 级别; vt. 测量; 攀登; 刮去…的鳞片; vi. 衡量; 攀登; (鳞屑) 脱落; 生水垢; collabor ...