⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ibatis.txt

📁 Java大部分的基础知识,EJB3,EJB2,WEBSERVICE,SOAP,JMS,MQ,还有些面试题
💻 TXT
字号:
七、ibatis的作用
	与hibernate相似,也是一个o/r mapping工具。
八、ibatis的核心配置文件及核心类
	a、核心配置文件
		sqlmapclient.xml:说明数据库连接及具体o/r Mapping文件所在的位置
		具体映射文件:具体说明对象与数据库表字段的映射关系,具体标签如下:
			<select>
			<delete>
			<update>
			<insert>:只执行insert
			<statement>:可以执行update、delete、insert、select
			<procedure>:调用存储过程
	b、核心类:
		SqlMapClientBuilder:加载sqlmapclient.xml文件及具体o/r Maping文件
		SqlMapClient:是一个具体的会话,可以进行增、删、改、查
			查询一个:queryForObject("操作串",对象)  
			查询一批:queryForList("操作串",对象)  
			增加:insert("操作串",对象)  
			删除:delete("操作串",对象)  
			修改:update("操作串",对象)  
七、ibatis配置过程:	
	将ibatisfactory拷贝到工程目录下
	加入四个包:sqlserver的三个,ibatis的1个-->lib
	修改ibatisfactory下的一个xml文件指定类包、驱动、url、具体的表与类的映射
	进入ibatisfactory目录运行java -jar abator.jar abatorConfig.xml true
	*删掉dao包和UsersExample.java
	复制sqlmapclient.xml-->src
	insert update delete queryForObject queryForList
八、jdbc、ibatis、hibernate的区别
九、为什么用ibatis
七、ibatis的作用
	是一个o/r Mapping工具,与hibernate相似,让我们的工作降低90%
八、ibatis的核心配置文件及核心类
	a、核心配置文件
		sqlmapclient.xml:说明数据库的连接及具体o/r Mapping文件所在的位置。
		具体的o/r mapping文件,其主要标签如下,id属性不可以重复:
			insert:做增加
			update
			delete
			select
			procedure:执行存储过程
			statement:可以执行			
	b、核心类:
		SqlMapClientBuilder:加载sqlmapclient.xml文件,生成一个SqlMapClient对象
		SqlMapCient:一个会话,可以进行增、删、改、查
			queryForObject("操作串",obj);
			queryForList("操作串",obj);
			update("操作串",obj);
			delete("操作串",obj);
			insert("操作串",obj);
			procedure("操作串",obj);
		
			Reader reader=Resources.getFileAsReader("sqlmapclient.xml");
			SqlMapClient sqlMapClient=SqlMapClientBuilder.buildSqlMapClient(reader);			
八、jdbc、ibatis、hibernate的区别
	jdbc:手动
		1、sql需要手写
		2、执行sql
			1、在执行增、改、删时,要将数据类的每个属性
			   一个一个取出,通过setString或相关的set方法
			   将值设置到PreparedStatement中,再通过executeUpdate
			   执行。
			2、在执行查时,要将ResultSet的信息一列一列取出
			   设置到数据类中,再一行一行取,设置到List或
			   Set中。
		综上:工作量大
	ibatis:半自动		
		1、sql需要手写
		2、执行sql
			1、在执行增、改、删时,直接传送一个对象。
			2、在执行查询时,直接返回一个对象或对象集合。
		综上:工作量少了90%
	hibernate:全自动	
		1、sql不需要手写
		2、执行sql
			1、在执行增、改、删时,直接传送一个对象。
			2、在执行查询时,直接返回一个对象或对象集合。
		综上:工作量少了95%
九、为什么用ibatis
	1、当需要高度优化的sql时
	2、如果用客户给几个select语句实现系统的功能,并没有给
	   整个表。对于hibernate来说每个表必须有主键,是全表映射。
	3、如果大量的业务逻辑写在存储过程中用ibatis。

spring与ibatis整合applicationContext.xml
	<bean id="dataSource"
		class="org.apache.commons.dbcp.BasicDatasource">
		<property name="driverClassName"
			value="com.microsoft.jdbc.sqlserver.SQLServerDriver">
		</property>
		<property name="url"
			value="jdbc:microsoft:sqlserver://localhost:1433;databaseName=pubs;selectMethod=cursor">
		</property>
		<property name="username" value="sa"></property>
	</bean>
<!--  
	<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
		<property name="dataSource" ref="dataSource"></property>
		<property name="configLocation" value="classpath:sqlmapclient.xml"></property>
	</bean>
	
	<bean id="customerDao" class="dao.impl.IbatisCustomerDaoImpl">
		<property name="sqlMapClient" ref="sqlMapClient"></property>
	</bean>
	
	<bean id="buyDao" class="dao.impl.IbatisBuyDaoImpl">
		<property name="sqlMapClient" ref="sqlMapClient"></property>
	</bean>
	
	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"></property>
	</bean>
	-->
	<bean id="realFacade" class="facade.Facade">
		<property name="buyDao" ref="buyDao"></property>
		<property name="customerDao" ref="customerDao"></property>
	</bean>
	
	<!-- 配置通用的代理-->
	<bean id="abstractProxy" abstract="true" 	class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
		<property name="transactionManager" ref="transactionManager"></property>
		<property name="transactionAttributes">
			<props>
				<prop key="insert*">PROPAGATION_REQUIRED</prop>
				<prop key="update*">PROPAGATION_REQUIRED</prop>
				<prop key="delete*">PROPAGATION_REQUIRED</prop>
				<prop key="select*">PROPAGATION_REQUIRED,readOnly</prop>
			</props>
		</property>
	</bean>
	<!-- 配置具体的facade代理 -->
	<bean id="facade" parent="abstractProxy">
		<property name="target" ref="realFacade"></property>
	</bean>
	<!--通过struts进行处理-->
	<bean name="/insert" class="struts.action.InsertAction">
		<property name="facade" ref="facade"></property>
	</bean>
	
	<bean name="/update" class="struts.action.UpdateAction">
		<property name="facade" ref="facade"></property>
	</bean>
	
	<bean name="/delete" class="struts.action.DeleteAction">
		<property name="facade" ref="facade"></property>
	</bean>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -