spring boot -mybaits 的返回各种数据类型

154 篇文章 15 订阅
32 篇文章 1 订阅

一 返回各种数据类型案例

1.1 返回单个实体

dao层:

mapper层:

id :identification:语句的标识,在同一个mapper映射文件下id需要唯一
parameterType: 参数类型,可以不写。因为 MyBatis 可以推断出传入语句的具体参数
resultType: 全限定类名或者是类型别名.
当使用resultType来映射结果时,需要 数据库表的列名或列别名 和 类的属性名相同,这样才能进行字段的匹配(USER_ID 和userId 就不能匹配)。但是如果在Mybatis配置文件中设置了

<settings>
  <setting name="mapUnderscoreToCamelCase" value="true"/> <!--开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN 到经典 Java 属性名 aColumn 的类似映射。-->
</settings>

此 时,表列名的下划线标记方式可以映射到驼峰标记的形式。(USER_ID -> userId)。mybatis进行映射时会将实体类属性和数据库列名(别名)都转化为大写来比较,所以USER_ID 和 UserId,userID等都可以匹配。

TooManyResultsException
返回单个实体时,调用方法 getUserById,但是如果是因为数据错误导致实际查询结果存在多个时,则会抛出异常

org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 2

除非可以确定最多只能查询到一条结果,否则的话不建议这么写.可以尝试返回集合的方式。

1.2通过返回list<String>

/**
 * 查询区域id,公司id,品牌id的组合
 * @param operateArea
 * @return
 */
List<String> getYesterdayShelfBikeCompose(OperateAreasBo operateArea);

这里有点奇怪:要返回list<String>, 为何xml中resultType的类型设置为String,就行了

1.3通过返回List<Map<String,Object>>

1.dao层:

//查询设备健康度占比
public List<Map<String,Object>> queryDeviceHealthRation(ParamInfoVo paramInfoVo);

2.mapper层

3.返回结果:

1.4.返回list<Javabean>

1.mapper:
//工单的统计
List<OperateTaskStatisticsBo> totalTaskStatistics(OperatorTaskDto operatorTaskDto);

2. xml的方法:

<!--工单统计数据-->

<select id="totalTaskStatistics" parameterType="xxx.domain.operator.dto.OperatorTaskDto" resultType="xxx.domain.operator.bo.OperateTaskStatisticsBo"> select search_day as searchDay, SUM(IFNULL(exchage_count,0)) as exchangeBatteryNum
from   operate_task_statistics

 1.5.返回integer与String

1.5.1 返回 integer

/**
 * 通过区域id,公司id,品牌id查询前一天上架车辆
 * @return
 */
Integer getYesterdayShelfBikeNumSum(OperateAreasBo operateArea);

1.5.2 返回 string

mapper.xml

<select id="queryDeviceStop" resultType="">
  select stop_symbol from where part_code=#{deviceCode}
</select>

dao层:

 public  String  queryDeviceStopSymbol(@Param("deviceCode") String deviceCode);

1.6.返回map类型,返回多行数据

map的key对应指定的字段名字所属值,map的value对应查出数据封装成的bean,返回的多条数据

dao层接口:

xmlMapper:

<!--查询可用的运营城市的运营城市名称-->
<select id="getOperateCityName" resultType="xxxx.domain.config.entity.OperateCity">
    select ad_code as adCode, operate_city_name as operateCityName from  operate_city where  del_flag=0
</select>

1.7.返回map类型,返回单条数据

1.service层

2.dao层

3.mapper

13、Mybatis把返回结果封装成map类型_u010502101的博客-CSDN博客_mybatis查询结果封装成map

1.8.返回map<String,List<Bean>>结构的数据

1.model:

2.mapper:

 3.dao

 4.controller

5.调用结果:

注意注意,返回的数据类型为map的话,,resultType不能使用,否则报错

 要改成:resultMap

1.9.使用@param参数

1.9.1 获取参数方式1

service:
@Override
public void batchupdateOrderNumCover1(String beginDate,String endDate) {
dailyOrderStatisticsReportInsertMapper.batchupdateOrderNumCover1(beginDate,endDate);
}

dao:
/**
 * 修改订单订单数》=1的用户状态
 */
public void  batchupdateOrderNumCover1(@Param("startTime")String startDate,@Param("endTime")  String endDate);

xml:

注意xml引用的参数要和@Param("xxx") 中xxx对应

1.9.2 获取参数2

1.10.传递interger类型的参数

在xml中,切记不能将integer,写成java.util.Intger下面,否则报错

报错:

正确的做法:java.lang.Integer

1.11  mybaits的like 模糊查询

1.11.1  方式1

设置各种复杂的like查询

 mybaits上进行查询

1.11.2  方式2

多个like查询

1.11.3 方式3

百分号在后边的情况: 

1.12 in语句

dao层:

//查询source名称
@MapKey("sourceId")
public Map<String,CrawMaterialEntry> querySourceNameMap(@Param("sidSet") Set<Integer> sourceIdSet);

mapper:

二  数据库类型和mybaits数据类型的映射

2.1 映射关系如下

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值