浅谈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, modifytimeselect from user_infowhere id = #{id,jdbcType=BIGINT}select from user_infowhere username = #{username,jdbcType=VARCHAR}select from user_infowhere 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中定义的返回值存放。* 4.若返回多条数据,dao中定义的返回值是一个对象,则无法将多条数据映射为一个对象,此时mybatis报错。* */ListselectByEmail(String email ); }
测试代码和结果文件
@RunWith(SpringJUnit4ClassRunner.class)//表示继承了SpringJUnit4ClassRunner类@ContextConfiguration(locations = {"classpath:spring-mybatis.xml"})public class TestMyBatis {private static Logger logger = Logger.getLogger(TestMyBatis.class); @Resourceprivate UserMapper userDao; @Testpublic void testMybatis() {User user = userDao.selectByUserName("ks"); logger.info("user........................."); logger.info(JSON.toJSONString(user)); Listusers=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; @Datapublic class DeviceQuestionInstruction {//tb_instruction使用说明表private String dvqsTitle; private ListinstructionList; }
TbInstruction.java
import lombok.Data; import java.util.Date; @Datapublic 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 {ListfindByNo(@Param("deviceTypeNo") String deviceTypeNo); }
TbDeviceQuestionMapper.xml
SELECT tb_device_question.title AS dvqs_title,tb_instruction.* FROM tb_device_questionLEFT JOIN tb_instructionON tb_device_question.id=tb_instruction.dvqs_idWHERE tb_device_question.device_type_no='HSAT-K5'ORDER BY tb_instruction.dvqs_level ASC
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
推荐阅读
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- mybatisplus如何在xml的连表查询中使用queryWrapper
- mybatisplus|mybatisplus where QueryWrapper加括号嵌套查询方式
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- 前端代码|前端代码 返回顶部 backToTop
- 性能测试中QPS和TPS的区别
- 浅谈教育与医学之本质和医学生培养之三观
- 浅谈朋友圈
- MyBatis|MyBatis Generator配置