java 将查询到的值 存下_MyBatis3.x 从入门到精通(六)查询

93ea8e3de61c1d80a9a9b4f9907f98c5.png

概述:

在前面的章节中,对查询已经有过接触,先做一下概述:接触过的查询有3种。第1种:根据id查询(传入1个参数);第2种:多条件查询(传入多个参数);第3种查询:多条件查询(传入1个对象)。这里是在前面的基础上,做扩展介绍。


这里先以selectById方法为例,拿出之前的配置文件:



id,name,sex,mobile,birthday,address,employee_nickname

上面的配置文件中有个标签,这个称之为:SQL片段。它的作用是抽取公共的sql语句,减少代码冗余。如果不书序SQL片段,那么在上面的配置中,每个select标签中的select语句语句都要写上 sql片段 里面的代码,代码会显的冗余。当然,该配置文件中可以书写多个SQL片段,只要保证标签的ID属性值不唯一,即可。

上面的配置查看 selectById 这个方法(即 ),在select标签中省写了一个 parameterType 它的作用是在接收入参时,指明参数的类型。比如selectById 是根据id查询数据,id类型,在接口中方法的参数上已经定义了Long类型。

EmployeeMapper接口方法如下:

    Employee selectById(@Param("id") Long id);

EmployeeMapper.xml 文件较完整写法:

    

上述配置调整后,运行测试方法,程序正常执行,输出结果如下:

7ebf35ffbe37b9b38546a8b4d9696dcd.png

注意:

parameterType参数类型

  • 可以是基本类型
parameterType="java.lang.Long"  或使用别名 parameterType="Long"
parameterType="java.lang.Integer" 或使用别名 parameterType="Integer"
  • 也可以是java集合List或Map类型
parameterType="java.lang.Map"  或使用别名 parameterType="Map"
parameterType="java.lang.List" 或使用别名 parameterType="List"
  • 还可以是java自定义的对象
parameterType="com.xbjct.domain.Employee"  或使用别名 parameterType="Employee"

上述配置文件,在进行取参时,代码如下:

where id = #{id}

可对其进行调整,指明取餐类型,调整后代码如下:

where id = #{id, jdbcType = BIGINT}

注意:

一般情况下不加也是可以正常使用的,若出现报错:无效的列类型时,则是缺少jdbcType。

在查询时,一般不会查询为null值,若需要查询字段为null,则需要jdbcType属性。

JDBC Type      Java Type
CHAR            String
VARCHAR         String
LONGVARCHAR     String
NUMERIC         java.math.BigDecimal
DECIMAL         java.math.BigDecimal
BIT             boolean
BOOLEAN         boolean
TINYINT         byte
SMALLINT        short
INTEGER         INTEGER
INTEGER         int
BIGINT          long
REAL            float
FLOAT           double
DOUBLE          double
BINARY          byte[]
VARBINARY       byte[]
LONGVARBINARY   byte[]
DATE            java.sql.Date
TIME            java.sql.Time
TIMESTAMP       java.sql.Timestamp
CLOB            Clob
BLOB            Blob
ARRAY           Array
DISTINCT        mapping of underlying type
STRUCT          Struct
REF             Ref
DATALINK        java.net.URL

parameterType参数类型为对象时

这里需要修改mapper.EmployeeMapper.xml文件,找到selectByDto的方法,给select标签加入parameterType属性,如下:

运行测试方法,程序正常执行,输出结果如下:

e59bf70b3efff91ec3ca5b04db1a1e38.png

注意:

如果查询条件:id、name、address其中一个为空时,是检索不到数据的。现在需要做的是,当查询条件为空时?可否将其过滤掉? 答案是:可以的。现在开始接触mybatis的if标签,代码调整如下:

    

上述配置修改,运行测试方法,程序正常执行,输出结果如下:

9176c529d60cd0dcb271772d1098ab3f.png

之前demo查询,其结果均为一个对象,可否查询一个集合?也是可以的。代码改动如下:

EmployeeMapper.xml文件中的方法不需要做改动

修改接口EmployeeMapper中selectByDto方法返回类型,

修改之前:

Employee selectByDto(@Param("queryDto") EmployeeQueryDTO queryDTO);

修改之后:

List selectByDto(@Param("queryDto") EmployeeQueryDTO queryDTO);

运行测试方法,程序正常执行,输出结果如下:

0f3150817f7d723e82bdbe625d72a9c0.png


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部