<resultMap id="empAndDeptResultMap" type="Emp"> <id column="emp_id" property="empId"></id> <result column="emp_name" property="empName"></result> <result column="age" property="age"></result> <result column="gender" property="gender"></result> <result column="dept_id" property="dept.deptId"></result> <result column="dept_name" property="dept.deptName"></result> </resultMap>中为什么Emp类中没有无参构造MyBatis却能正确创建Emp对象
时间: 2023-10-09 10:07:40 浏览: 79
在MyBatis中,如果一个类中没有显式定义无参构造函数,Java会自动提供一个无参构造函数。当MyBatis创建Emp对象时,它会首先调用Emp的无参构造函数来创建一个对象,然后通过调用setter方法来设置对象的属性。因此,尽管Emp类中没有显式定义无参构造函数,MyBatis仍然可以正确创建Emp对象。
但是,如果Emp类中定义了有参构造函数,而没有显式定义无参构造函数,那么在创建Emp对象时就会出现问题。因为MyBatis无法通过调用无参构造函数来创建Emp对象,因此会抛出异常。所以,最好为每个类都显式地定义一个无参构造函数,以确保MyBatis能够正确地创建对象。
相关问题
<resultMap id="treeListResult" type="TreeListVo"> <id column="id" property="id"/> <result column="name" property="name"/> <result column="parent_id" property="parentId"/> <result column="sort" property="sort"/> <collection property="children" ofType="TreeListVo"> <id column="id" property="id"/> <result column="name" property="name"/> <result column="parent_id" property="parentId"/> <result column="sort" property="sort"/> <collection property="children" ofType="TreeListVo"> ... </collection> </collection> </resultMap>sql怎么写
假设你的树形结构表名为 `tree`,包含字段 `id`、`name`、`parent_id`、`sort`,其中 `id` 是主键,`parent_id` 是父节点的 ID,根节点的 `parent_id` 为 null。根据上面的 `resultMap` 配置,一对多查询的 SQL 可以这样写:
```sql
SELECT *
FROM tree t1
LEFT JOIN tree t2 ON t1.id = t2.parent_id
WHERE t1.parent_id IS NULL
ORDER BY t1.sort, t2.sort
```
这个 SQL 查询出所有根节点及其子节点,按照根节点的 `sort` 字段升序排列,子节点按照其 `sort` 字段升序排列。其中,`t1` 表示根节点,`t2` 表示子节点。`LEFT JOIN` 保证即使某个根节点没有子节点,仍然能查询出来。
注意,如果树很大,这个查询可能会很慢,需要根据实际情况进行优化,例如增加索引等。
<resultMap id="BaseResultTreeMap" type="com.shic.edu.model.vo.platform.EduPlatformLearnTypeLearnVo"> <id column="id" property="id"/> <result column="type_name" property="typeName"/> <result column="parent_id" property="parentId"/> <result column="sort" property="sort"/> <result column="help_center_default" property="helpCenterDefault"/> <collection property="platformHelpLearnVos" ofType="com.shic.edu.model.vo.platform.EduPlatformHelpLearnVo" column="type_id"> <id column="learnId" property="learnId"/> <result column="learn_name" property="learnName"/> <result column="type_id" property="typeId"/> <result column="publish_time" property="publishTime"/> <result column="type" property="type"/> <result column="learn_content" property="learnContent"/> </collection> </resultMap> 结果为空
这段代码是一个 MyBatis 的 resultMap,用于将查询结果映射成一个 EduPlatformLearnTypeLearnVo 对象,其中包含一个平台学习类型的信息以及该类型下的学习帮助信息。根据您提供的信息,可能是因为查询结果为空导致没有生成对象。您可以检查一下查询语句或者数据库中是否存在对应的数据。
阅读全文