实体类
public class Module {
private int id;
private String key;
private String name;
private Module parentModule;
private List<Module> childrenModules;
private String url;
private int sort;
private String show;
private String del;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Module getParentModule() {
return parentModule;
}
public void setParentModule(Module parentModule) {
this.parentModule = parentModule;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public int getSort() {
return sort;
}
public void setSort(int sort) {
this.sort = sort;
}
public String getShow() {
return show;
}
public void setShow(String show) {
this.show = show;
}
public String getDel() {
return del;
}
public void setDel(String del) {
this.del = del;
}
public List<Module> getChildrenModules() {
return childrenModules;
}
public void setChildrenModules(List<Module> childrenModules) {
this.childrenModules = childrenModules;
}
}
<mapper namespace="com.sagaware.caraccess.mapper.ModuleMapper">
<resultMap type="Module" id="moduleResultMap">
<id property="id" column="module_id"/>
<result property="key" column="module_key"/>
<result property="name" column="module_name"/>
<result property="url" column="module_url"/>
<result property="sort" column="module_sort"/>
<result property="show" column="module_show"/>
<result property="del" column="module_del"/>
<!-- 查询父模块 -->
<association property="parentModule" column="module_parent_id" select="getModulesById" />
<!-- 查询子模块 -->
<collection property="childrenModules" column="module_id" select="getChildrenModues" />
</resultMap>
<select id="getModules" parameterType="String" resultMap="moduleResultMap">
select * from tb_module where module_id=2
</select>
<select id="getModulesById" parameterType="int" resultMap="moduleResultMap">
select * from tb_module where module_id = #{module_id}
</select>
<select id="getChildrenModues" parameterType="int" resultMap="moduleResultMap">
select * from tb_module where module_parent_id = #{module_id}
</select>
</mapper>
分享到:
相关推荐
7. **自关联映射**:当一个实体类中的字段类型是自身类型时,可以进行自关联映射,例如员工的上级员工关系。 8. **外键策略**:MyBatis提供多种外键处理策略,如`useGeneratedKeys`和`keyProperty`,帮助处理自增...
自关联查询就是当一个实体类(如 Category)需要引用自身来表示这种关系时所采用的方法。 1. 实体类设计: 首先,我们需要创建 Category 类,其中包含 ID、名称等属性,并添加一个 List<News> 的属性来表示所属的...
MyBatis 是一款著名的持久层框架,它允许开发者将 SQL 查询与 Java 代码直接结合,提供了强大而灵活的映射机制。在实际的业务场景中,我们常常需要处理多表关联查询,例如“一对多”关系。这次我们将深入探讨 ...
当执行`selectOrders`查询时,MyBatis会使用`myOrder`结果映射自动将查询结果转换为`Order`对象列表,每个`Order`对象包含其自身的`id`和`name`,以及一个`Customer`对象,表示该订单所属的客户。 总结来说,这个...
着手“手撕Mybatis源码,自己动手实现Mybatis”是一项深入理解其内部机制的挑战,也是提升自身编程技能的绝佳途径。下面我们将探讨Mybatis的核心组件和工作原理,以及如何基于这些知识构建一个类似的框架。 1. **...
6. **MappedStatement**: 表示一个映射语句,封装了SQL的ID、SQL语句、参数类型、返回值类型等信息,是MyBatis将Java方法与SQL语句关联起来的桥梁。 7. **ParameterHandler**: 参数处理器,用于处理SQL语句中的参数...
对于MyBatis自身的配置,创建一个名为`configuration.xml`的文件,通常放在`src/main/resources`目录下。此文件遵循MyBatis的配置DTD,如: ```xml <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config ...
5. **结果映射**:MyBatis 自动将 SQL 查询结果转换为 Java 对象,通过 resultType 或 resultMap 配置,可以指定简单的类型映射或复杂的对象关联映射。 6. **参数映射**:MyBatis 支持多种方式传递参数,包括 Map、...
Mybatis是中国著名的开源Java持久层框架之一,由Jim Wang创建,旨在简化数据库操作,使得开发者可以专注于SQL本身,而无需过于关注数据访问...同时,对于面试和职业发展来说,精通Mybatis也是提升自身技能的重要一步。
8. **ResultMap**:ResultMap 是 MyBatis 中用于映射结果集的配置,它可以处理复杂的映射关系,如一对一、一对多、多对一等关联映射。 9. **TypeHandler**:TypeHandler 负责 Java 类型与 JDBC 类型之间的转换,...
你可以选择由MyBatis自身管理事务,也可以在应用层面进行控制。在学习过程中,了解如何配置和使用事务管理,对于开发高可用性的系统至关重要。 此外,MyBatis支持结果映射,允许自定义字段与对象属性的映射规则,...
MyBatis通过@Mapper注解将Mapper接口与XML映射文件关联起来,使得可以通过调用接口方法执行SQL。同时,还可以使用@Select、@Insert、@Update、@Delete等注解在接口方法上直接写SQL。 七、事务管理 MyBatis的事务...
接口的方法签名与XML文件中的SQL映射元素关联,使得可以在Java代码中调用SQL。 5. **Executor**:执行器是MyBatis的执行核心,负责执行SQL,有两种类型:SimpleExecutor和ReusedExecutor。SimpleExecutor每次都会...
- **一级缓存**: 由 MyBatis 自身维护,也称为本地缓存,它的作用范围是同一个 `SqlSession` 内。在一个 `SqlSession` 中,执行查询操作时,会将查询结果缓存到一级缓存中;如果再次查询相同的数据,会直接从缓存中...
这表明该项目不仅运用了MyBatis,还可能结合了Java的注解功能,如Spring框架的@Autowired注解用于自动装配依赖,或者MyBatis自身的@Select、@Insert、@Update和@Delete等注解,这些注解简化了SQL语句的编写和映射,...
MyBatis是一个优秀的持久层框架,它简化了SQL映射,而Spring框架则提供了强大的依赖注入和管理功能。两者的结合使得开发更加便利,降低了代码的耦合度。 首先,我们需要理解MyBatis的核心概念。MyBatis通过XML或...
3. 映射器接口和映射文件的绑定:MyBatis如何将Mapper接口与XML映射文件关联起来,实现接口调用和SQL执行的关联。 4. 数据库连接与事务管理:MyBatis如何管理数据库连接,以及如何实现事务控制。 5. 参数和结果集...
"mybaits-plug"这个标签可能是对"Mybatis-plugin"的简化写法,它突出了插件与MyBatis框架的关联性。这表明该插件专注于MyBatis框架的开发辅助。 【文件名称列表】 "mybatis_plugin"可能代表的是该插件的安装文件或...
在分页方面,MyBatis允许通过PageHelper等插件实现高效分页,但这通常不是MyBatis自身的内置功能,需要额外配置和引入第三方库。 总之,MyBatis提供了一个灵活的持久层解决方案,允许开发者保留对SQL的控制,同时...
1. SQL映射:MyBatis 的核心是XML或注解形式的SQL映射文件,这些文件定义了SQL语句和Java方法之间的关联。通过动态SQL,我们可以构建高度可定制的查询,避免了硬编码SQL,提高了代码的可维护性。 2. 映射器(Mapper...