浅谈mybatis返回单一对象或对象列表的问题

网友投稿 842 2022-12-15

浅谈mybatis返回单一对象或对象列表的问题

浅谈mybatis返回单一对象或对象列表的问题

目录mybatis返回单一对象或对象列表一、说明二、代码测试UserMap.xml映射文件dao文件UserMap.java测试代码和结果文件mybatis 返回的对象包含集合

mybatis返回单一对象或对象列表

一、说明

返回数据类型由dao中的接口和map.xml文件共同决定。另外,不论是返回单一对象还是对象列表,***map.xml中的配置都是一样的,都是resultMap=”***Map”或resultType=“* .* .*”类型.

每一次mybatis从数据库中select数据之后,都会检查数据条数和dao中定义的返回值是否匹配。

若返回一条数据,dao中定义的返回值是一个对象或对象的List列表,则可以正常匹配,将查询的数据按照dao中定义的返回值存放。

若返回多条数据,dao中定义的返回值是一个对象,则无法将多条数据映射为一个对象,此时mybatis报错。

二、代码测试

UserMap.xml映射文件

id, username, password, email, qq, phone, gender, birthday, city, mood, single, enrolltime,

level, status, titlepic, job, logintime, loginip, token, modifytime

select

from user_info

where id = #{id,jdbcType=BIGINT}

select

from user_info

where username = #{username,jdbcType=VARCHAR}

select

from user_info

where email = #{email,jdbcType=VARCHAR}

dao文件UserMap.java

public interface UserMapper {

User selectByPrimaryKey(Long id);

User selectByUserName(String username );

/**关于mybatis返回单一对象或对象列表的问题:

* 1.返回数据类型由dao中的接口和*map.xml文件共同决定。另外,不论是返回单一对象还是对象列表,*map.xml中的配置都是一样的,都是resultMap="*Map"*或resultType=“* .* .*”类型.

* 2.每一次mybatis从数据库中select数据之后,都会检查数据条数和dao中定义的返回值是否匹配。

* 3.若返回一条数据,dao中定义的返回值是一个对象或对象的List列表,则可以正常匹配,将查询的数据按照dao中定义的返回值存放。http://

* 4.若返回多条数据,dao中定义的返回值是一个对象,则无法将多条数据映射为一个对象,此时mybatis报错。

* */

List selectByEmail(String email );

}

测试代码和结果文件

@RunWith(SpringJUnit4ClassRunner.class) //表示继承了SpringJUnit4ClassRunner类

@ContextConfiguration(locations = {"classpath:spring-mybatis.xml"})

public class TestMyBatis {

private static Logger logger = Logger.getLogger(TestMyBatis.class);

@Resource

private UserMapper userDao;

@Test

public void testMybatis() {

User user = userDao.selectByUserName("ks");

logger.info("user.........................");

logger.info(jsON.toJSONString(user));

List users=userDao.selectByEmail("ks");

logger.info("list.........................");

for(User userTemp : users)

{

logger.info(JSON.toJSONString(userTemp));

}

}

}

mybatis 返回的对象包含集合

DeviceQuestionInstruction.java

import com.hikari.cloud.data.entity.TbInstruction;

import lombok.Data;

import java.util.Date;

import java.util.List;

@Data

public class DeviceQuestionInstruction {//tb_instruction 使用说明表

private String dvqsTitle;

private List instructionList;

}

TbInstruction.java

import lombok.Data;

import java.util.Date;

@Data

public class TbInstruction {//tb_instruction 使用说明表

private Long id;

private Long userId;

private String title;

private String detail;

private String url;

private Integer type;

private Integer suffix;

private String deviceCategory;

private String deviceTypeName;

private String deviceTypeNum;

private Integer views;

private Long dvqsId;

private Integer dvqsLevel;

private Date gmtCreate;

}

TbDeviceQuestionMapper.java

import com.hikari.cloud.data.bean.DeviceQuestionInstruction;

import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface TbDeviceQuestionMapper {

List findByNo(@Param("deviceTypeNo") String deviceTypeNo);

}

TbDeviceQuestionMapper.xml

PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

SELECT tb_device_question.title AS dvqs_title,tb_instruction.* FROM tb_device_question

LEFT JOIN tb_instruction

ON tb_device_question.id=tb_instruction.dvqs_id

WHERE tb_device_question.device_type_no='HSAT-K5'

ORDER BY tb_instruction.dvqs_level ASC

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:mybatis如何实现继承映射
下一篇:idea将项目上传到Gitee的图文过程
相关文章

 发表评论

暂时没有评论,来抢沙发吧~