MyBatis对整合多个表的类的操作
来源:互联网 发布:中信淘宝信用卡权益 编辑:程序博客网 时间:2024/06/05 10:08
前言
前几天在实现oj的DAO层时,由于将problem表中的一些字段拿出来做了字典表,导致了数据库表过多,如果还是像以前一样:一个数据库表对应一个实体类的话,这样不仅会增加好多重复性的工作,还会使得逻辑层的编写变得复杂。
解决方法
于是,我们将关联密切的表整合为一个实体类,这样来简化DAO层的实现。下面就来看看DAO层是如何实现的吧。
数据库的关联表
这里我对题目字典表做了简化。
CREATE TABLE `dict_problem` ( `id` int(10) NOT NULL auto_increment COMMENT 'ID', `problemAlgorithmId` int(11) DEFAULT NULL COMMENT '算法字典表ID', `problemStructureId` int(11) DEFAULT NULL COMMENT '数据结构字典表ID', PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT = 1001 DEFAULT CHARSET=utf8 COMMENT='题目字典表';
CREATE TABLE `dict_problem_algorithm` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID', `type` varchar(50) DEFAULT NULL COMMENT '算法的类型', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='算法字典表';
CREATE TABLE `dict_problem_structure` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID', `type` varchar(50) DEFAULT NULL COMMENT '数据结构的类型', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='数据结构字典表';
对应的实体类
public class Problem extends BasicVo{ private int id; //ID private String problemAlgorithm; //算法字典表 private String problemStructure; //数据结构字典表 //下面省略了构造函数和get,set方法...}
插入操作
插入需要传入一个Problem的对象,然后dict_problem表进行插入操作,(默认算法字典表,数据结构字典表的数据已存在)
//通过insert...set来实现<insert id="save" parameterType="Problem" > insert into dict_problem SET problemAlgorithmId = (SELECT id FROM dict_problem_algorithm WHERE dict_problem_algorithm.type = #{problemAlgorithm} ), problemStructureId = (SELECT id FROM dict_problem_structure WHERE dict_problem_structure.type = #{problemStructure} )</insert>
查询操作
根据条件将查找的信息放入Problem对象。
<select id="listBatch" resultType="Problem"> select p.id, a.type as problemAlgorithm, s.type as problemStructure from dict_problem as p inner join dict_problem_algorithm as a on p.problemAlgorithmId=a.id inner join dict_problem_structure as s on p.problemStructureId=s.id <where> 根据Problem的其他字段进行筛选。 </where> limit #{param2},#{param3} </select>
阅读全文
0 0
- MyBatis对整合多个表的类的操作
- Mybatis-spring整合对session的理解
- mybatis 对 mysql的批量操作
- mybatis 对 oracle 的批量操作,
- Mybatis-02-对数据库的基本操作
- Spring-mybatis的整合
- spring整合mybatis的
- mybatis+spring的整合
- spring+mybatis整合后进行数据库操作的方法
- Mybatis-Mybatis与Spring的整合
- spring整合mybatis开启mybatis的二级缓存
- Struts2+mybatis+Spring的整合
- springMvc,Mybatis,velocity 的整合
- MyBatis与Spring的整合
- spring整合mybatis的事务管理
- Springmvc+mybatis的整合过程
- mybatis+spring整合,能用的
- spring 和 mybatis 的整合
- find()与children(),parent()与parents()理解与运用
- 20170804阿里面试题
- 堆排序
- Lintcode 丢失的第一个正整数
- 2017第三次多校联合hdu6058
- MyBatis对整合多个表的类的操作
- C#数组详细介绍
- fork()时缓冲区注意事项
- A Bug's Life HDU
- POJ-1089-Intervals(贪心)
- linux软链接和硬链接详解及扩散式学习总结
- Hibernate学习之---深入Hibernate配置文件
- 合纵连横 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 乱世天下,诸侯割据。每个诸侯王都有一片自己的领土。但是不是所有的诸侯王都是安分守己的,实力强大的诸侯国会设法吞并
- hdu2041