app开发者平台在数字化时代的重要性与发展趋势解析
824
2022-12-15
浅谈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
}
测试代码和结果文件
@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
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
}
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
}
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~