mysql map 结果集封装_mybatis 使用Map封装查询的结果

有时我们厌倦了为每个查询写一个Entity类,这时Map开始发挥它的功效。

对于要返回“学号,班级,姓名”结果的查询,可以这样写Mapper:

select s.code as sNo , s.name as sName, c.name as cName

from xStudent s, xClass c

where s.cID = c.ID

如下声明我们的dao方法:

public List> selectStudent(Map parameter) {

return getSqlSession().selectList(getStatement("selectStudent"), parameter);

}

如果要将该查询结果转为JSON字符串返回,那么我们就可以直接将List转为JSON,逻辑层不需要任何代码。

如果返回的结果集需要按select中的字段顺序返回,那么将resultType="java.util.HashMap" 换为resultType="java.util.LinkedHashMap"

------------------------------华丽分割线-----------------------------

使用Map封装查询结果时注意数据的类型映射

对于如下的Mapper

select s.code as sNo , concat(s.firstName, s.lastName) as sName

from xStudent s

Mybatis会傻傻的将sName的数据类型映射为byte[], 因为我们没有提供entity,mybatis也不知道我们想要什么类型,而sName是计算出来的值,mybatis也没有办法从数据库中获取字段的值,所以它就将其封装为byte[],解决办法很简单,加一个cast 函数

select s.code as sNo , cast(concat(s.firstName, s.lastName) AS CHAR) as sName

from xStudent s

------------------------------------华丽分割线--------------------------------

之前讲到了orcale的字符串与日期等类型的转换,现在我们来看看MySQL是怎么转换的。比起orcale,MySQL相比之下就简单得多了,只需要一个Cast()函数就能搞定。其语法为:Cast(字段名 as 转换的类型 ),其中类型可以为:

CHAR[(N)] 字符型

DATE  日期型

DATETIME  日期和时间型

DECIMAL  float型

SIGNED  int

TIME  时间型

例如表table1

date

2015-11-03 15:31:26

select cast(date as signed) as date from  table1;

结果如下:

date

20151103153126

select cast(date as char) as date from  table1;

结果如下:

date

2015-11-03 15:31:26

select cast(date as datetime) as date from  table1;

结果如下:

date

2015-11-03 15:31:26

select cast(date as date) as date from  table1;

结果如下:

date

2015-11-03

select cast(date as time) as date from  table1;

结果如下:

date

15:31:26

这里date对应日期,time对应时间

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值