现在的位置: 首页 > 综合 > 正文

MyBatis基于XML配置

2019年03月08日 ⁄ 综合 ⁄ 共 4378字 ⁄ 字号 评论关闭
SqlMapConfig.xml文件配置如下:
<?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"  
      lazyLoadingEnabled="true"  
      enhancementEnabled="true"   
      errorTracingEnabled="true" 
     maxRequests="32"  
     maxSessions="10"  
     maxTransactions="5" 
     useStatementNamespaces="true"/>  <!-- 是否启用名称空间 -->  
     <transactionManager  type ="JDBC" >   <!-- 定义了ibatis的事务管理器有3中(JDBC,JTA,EXTERNAL) -->  
      <dataSource  type ="SIMPLE" >   <!-- type属性指定了数据源的链接类型,也有3种类型(SIMPLE,DBCP,JNDI) -->  
          <property  name ="JDBC.Driver"  value ="oracle.jdbc.driver.OracleDriver" />  
          <property  name ="JDBC.ConnectionURL"  value ="jdbc:oracle:thin:@localhost:1521:OUYANG" />  
          <property  name ="JDBC.Username"  value ="study" />  
          <property  name ="JDBC.Password"  value ="admin" />  
          <property  name ="Pool.MaximumActiveConnections"  value ="10"   />   <!-- 连接池维持的最大容量 -->  
          <property  name ="Pool.MaximumIdleConnections"  value ="5" />   <!-- 连接池允许挂起的最大连接 -->  
          <property  name ="Pool.MaximumCheckoutTime"  value ="120000" />   <!-- 连接被某个任务所允许占用的最大时间 -->  
          <property  name ="TimeToWait"  value ="500" />   <!-- 线程允许等待的最大时间 -->          
      </dataSource >  
    </transactionManager >  
    <sqlMap  resource ="com/lovesmile/orp/UserMap.xml" />
 	<sqlMap  resource ="com/lovesmile/orp/CompanyrMap.xml" /> 
  </sqlMapConfig > 

映射文件UserMap.xml的详情:
<?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="User">
	<!-- 定义该映射文件的Cache机制 -->
	<cacheModel type="LRU" id="userCache">
		<!-- 设定缓存存活的时间 -->
		<flushInterval hours="24" />
		<!-- 设定指定的操作,清空缓存 -->
		<flushOnExecute statement="User.updateUser" />
		<!-- 设定缓存的容量(对象) -->
		<property name="size" value="1000" />
	</cacheModel>
	<!-- 定义别名 -->
	<typeAlias alias="user" type="com.lovesmile.orp.entity.Users" />
	<typeAlias alias="company" type="com.lovesmile.orp.entity.Company" />
	<typeAlias alias="card" type="com.lovesmile.orp.entity.CardId" />
	<!-- 通过缓存可以提高查询效率 -->
	<resultMap class="user" id="getresult">
		<result property="id" column="id" />
		<result property="username" column="username" />
		<result property="pswd" column="password" />
		<result property="email" column="email" />
		<result property="cardid" column="id" select="User.getcard"/><!-- 一对一 -->
		<result property="company" column="id" select="User.getcompany"/><!-- 多对一 -->
	</resultMap>
	<select id="getUsers" resultMap="getresult" resultClass="user"
		cacheModel="userCache">
    <![CDATA[
   	 	select u.id,u.username,u.email,p.password from users u,pwd p where p.u_d=u.id
    ]]>
	</select>
	<update id="updateUser" parameterClass="user">
          	<![CDATA[ update users set
          					 username = #username#,email=#email#
          		  	  where id = #id#]]>
	</update>
	<insert id="insertuser" parameterClass="user">
          	<![CDATA[ insert into users(id,username,email) values(#id#,#username#,#email#)]]>
	</insert>
	<delete id="delUser" parameterClass="java.lang.Integer">
          	<![CDATA[delete from users where id = #id#]]>
	</delete>
	<insert id="insertuserBySequence" parameterClass="user">
		<selectKey resultClass="java.lang.Integer" keyProperty="id">
			select person_seq.nextVal from dual
		</selectKey>
          	<![CDATA[ insert into users(id,username,email) values(#id#,#username#,#email#)]]>
	</insert>
	<!-- 一对一查询 -->
	<select id="getcard" resultClass="card" parameterClass="java.lang.Integer">
    <![CDATA[
   	 	select cid,cname from card where u_id=#value#
    ]]>
    </select>
    <select id="getcompany" resultClass="company" parameterClass="java.lang.Integer">
    <![CDATA[
   	 	select c.* from company c,users u where c.pid=u.p_id and u.id=#value#
    ]]>
	</select>
	<select id="getUsersByName" parameterClass="String" resultClass="user">
    <![CDATA[
   	 	select * from users where username like '%$username$%'
    ]]>
	</select>
</sqlMap>


映射文件CompanyrMap.xml的详情:
<?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="Company">
	<!-- 定义该映射文件的Cache机制 -->
	<cacheModel type="LRU" id="userCache">
		<!-- 设定缓存存活的时间 -->
		<flushInterval hours="24" />
		<!-- 设定缓存的容量(对象) -->
		<property name="size" value="1000" />
	</cacheModel>
	<!-- 定义别名 -->
	<typeAlias alias="user" type="com.lovesmile.orp.entity.Users" />
	<typeAlias alias="company" type="com.lovesmile.orp.entity.Company" />
	<!-- 通过缓存可以提高查询效率 -->
	<resultMap class="company" id="getresult">
		<result property="pid" column="pid" />
		<result property="pname" column="pname" />
		<result property="users" column="pid" select="Company.getusers"/><!-- 一对多 -->
	</resultMap>
	<select id="getCompany" resultMap="getresult" resultClass="company">
    <![CDATA[
   	 	select * from company
    ]]>
	</select>
	<!-- 一对一查询 -->
	<select id="getusers" resultClass="user" parameterClass="java.lang.Integer">
    <![CDATA[
   	 	select id,username,email from users where p_id=#value#
    ]]>
    </select>
</sqlMap>

 

抱歉!评论已关闭.