ibatis初学

来源:互联网 发布:万国数据上海 福利待遇 编辑:程序博客网 时间:2024/05/29 02:09

最近在做一个项目,本来是零基础的(以前还没正式地做过),碰到一些只听说过但是没用过的技术:比如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 sqlMapConfigPUBLIC "-//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里定义的

/*@Overridepublic 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>再看controlpublic 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;}






原创粉丝点击