ibatis初学


最近在做一个项目,本来是零基础的(以前还没正式地做过),碰到一些只听说过但是没用过的技术:比如ibatis。ibatis是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQLMaps和Data Access Objects(DAO),同时还提供一个利用这个框架开发的JPetStore实例。 相对Hibernate和Apache OJB等“一站式”ORM解决方案而言,ibatis 是一种“半自动化”的ORM实现。iBATIS需要开发人员自己来写sql语句,这可以增加了程序的灵活性,在一定程度上可以作为ORM的一种补充。程序设计人员应该结合自己的项目的实际情况,来选择使用不同的策略。iBATIS和Hibernate都做了映射,但iBATIS是把实体类和sql语句之间建立了映射关系,这种策略可以允许开发人员自己来写合适的sql语句,而Hibernate在实体类和数据库之间建立了映射关系,sql对于开发人员是不可见的,对于那些数据量非常大的应用,无法去优化sql语句。所以在实际应用中,应该根据不同的应用场景,来选择适合自己的框架.
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig
PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
	<settings cacheModelsEnabled="true" 
			  enhancementEnabled="true"
		      lazyLoadingEnabled="true" 
		      errorTracingEnabled="true" 
		      maxRequests="32"
			  maxSessions="10"
			  maxTransactions="5"
			  useStatementNamespaces="false" />
	<typeHandler javaType="java.lang.String"
		callback="..." />  自己写
	<sqlMap resource="config/ibatis/oracle/Fxsc.xml" />
	<sqlMap resource="config/ibatis/oracle/Zrzj.xml" />
</sqlMapConfig>

以上是ibatis的配置信息,就是将xml(也就是写sql语句的文件)配置到SqlMapConfig里,类似初始化。

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" 
		  "http://www.ibatis.com/dtd/sql-map-2.dtd">
<sqlMap namespace="Fxsc">
	<typeAlias alias="fxsc" type="com.model.Fxsc" />
		<resultMap id="getFxscResult" class="fxsc">
		<result property="fxdlid" column="fxdlid" />
		<result property="fxscid" column="fxscid" />	 	 
		<result property="fxscname" column="fxscname" />
		<result property="fxsccontent" column="fxsccontent" />		 
		</resultMap>       //resultMap是select语句查询时返回的结果集,而这些结果集均要写入com.model.Fxsc(里面的内容类似javabean,属性,get(),set())

	<select id="getFxsc" resultMap="getFxscResult" parameterClass="map">  
//"getFxsc"这个是dao.impl里定义的


	
/*@Override
	public List findAll(Map map) {
		// TODO Auto-generated method stub
		  return queryForList("getFxsc", map);
	}*/


以下就是自己写的sql语句了。
     
<![CDATA[
    	select distinct t.fxscid, t.fxdlid  , t.fxscname, t.fxsccontent
           from xzfxsc t
          where 1=1        
   		   ]]>
<dynamic prepend="and">  		
 <isNotEmpty prepend="and" property="fxscid">t.fxscid=#fxscid# </isNotEmpty></dynamic>
/*dynamic是动态查询用的,如果fxscid不是空的,后面就会and条件加上,参数是map传入的,也就是条件查询时需要用到
Map<String, Object> aa = new HashMap<String, Object>();
		aa.put("fxdlid", id);
		*/
 </select> <insert id="insertFxsc" parameterClass="fxsc"> //插入,注意就是不管下面的参数有没有,表中的字段全部都要写上 insert into xzfxsc(fxscid,fxdlid,fxscname,fxsccontent) values(#fxscid#,#fxdlid#,#fxscname#,#fxsccontent#)</insert> <update id="updateFxsc" parameterClass="fxsc">//更新update XZFXSC setfxdlid=#fxdlid#,fxscname=#fxscname#,fxsccontent=#fxsccontent#where fxscid = #fxscid# </update> <delete id="deleteFxsc" parameterClass="fxsc">//删除delete fromXZFXSCwhere FXSCID = #fxscid#</delete> </sqlMap>
再看control
public Object open(String id,String gwmc) throws Exception{
Map<String, Object> aa = new HashMap<String, Object>();
aa.put("fxdlid", id);
aa.put("fxscname", gwmc);
List<Fxsc> fxsc =  (List<Fxsc>) fxscService.getFxscList(aa);        
Grid json = Util.ListToGrid(fxsc,"fxscid,fxscname,fxsccontent");//这是前台jsp页面传来的有几列,这些也都是在model里的,将其//组织成json格式然后输出
System.out.println(fr.zenexity.json.JSON.toJSON(json));
return json;
}







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值