ibatis一对多数据库如何实现
这篇文章主要介绍了ibatis一对多数据库如何实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇ibatis一对多数据库如何实现文章都会有所收获,下面我们一起来看看吧。
iBatis的多表关联。
ibatis的表关联,和数据库语句无关,是在Java程序中,把若干语句的结果关联到一起。
这种关联形式,虽然在大数据量时是很奢侈的行为,但是看起来很干净,用起来也很方便。这里用表lock和key为例,一个lock可以配多个key。
CREATETABLE lock(
id int,
lockName varchar
);
CREATETABLEkey(
id int,
lockId int,
keyName varchar
);定义映射类
package zzcv.dao.domain;
publicclass Lock
{
privateint id;
private String lockName;
private List<Key> keys = new ArrayList<Key>();
publicvoid getId(){
return..
...
//省略
}
package zzcv.dao.domain;
publicclass Key
{
privateint id;
private String keyName;
private Lock lock; ...
//省略
}表关联通过配置文件的resultMap实现,不需要关联的查询仍可用resultClass
<sqlMap namespace="test">
<typeAlias alias="Key"="zzcv.dao.domain.Key"/>
<typeAlias alias="Lock"="zzcv.dao.domain.Lock"/>
<resultMap id="KeyResult"="Key">
<result property="id"="id"/>
<result property="keyName"="keyName"/>
<result property="lock"="lockId"="getLockById"/>
</resultMap>
<!---->
<resultMap id="LockResult"="Lock">
<result property="id"="id"/>
<result property="lockName"="lockName"/>
<result property="keys"="id"="getKeysByLockId"/>
</resultMap>
<!---->
<!---->
<select id="selectAllkeys"="KeyResult">
<![CDATA[
select id,lockId,keyName from key
]]>
</select>
<select id="getLockById"="int"="Lock">
<![CDATA[
select id,lockName from lock where id = #value#
]]>
</select>
<select id="selectAllLocks"="LockResult">
<![CDATA[
select id,lockName from lock
]]>
</select>
<select id="getKeyByLockId"="int"="key">
<![CDATA[
select id,lockId,keyName from lock where lockId = #value#
]]>
</select>
</sqlMap> 现在可以代码中使用了
...
..
try{
Reader reader ="mxd/dao/data/SqlMapConfig.xml");
sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);
reader.close(); }
catch(IOException e){
thrownew"Something bad happened while building the SqlMapClient instance."+ e, e);}
List locks=sqlMapper.queryForList("selectAllLocks");
//取一个Lock对象。
=(Lock)locks.get(0);
//从Lock对象取List<Key>。
=lock.getKeys();
//示例结束,取到结果了,剩余的一个关联是取对象Lock,其余操作差不多,就不写出了。
...
相关内容
这些是最新的
热门排行
- THINKPHP5+GatewayWorker+Workerman 开发在线客服系统
- 在手机浏览器网页中点击链接跳转到微信界面的方法
- 尊云网站目录系统 ThinkPHP5网站分类目录程序 v2.2.221011
- CentOS 7安装shadowsock(一键安装脚本)
- AdminTemplate 基于LayUI 2.4.5实现的网站后台管理模板
- 用NW.js(node-webkit)开发多平台的桌面客户端
- PHP生成随机昵称/用户名
- THINKPHP5网站分类目录程序 尊云网站目录系统
- 织梦(DEDECMS)微信支付接口 微信插件
- 基于LayUI开发的 网站后台管理模板 BeginnerAdmin
- 响应式后台网站模板 - AMA.ADMIN
- layuiAdmin后台管理模板 Iframe版
- LayUI 1.0.9 升级 至 LayUI 2.1.4 方法
- 简洁清爽的会员中心模板
- jQuery幸运大转盘抽奖活动代码