Spring 集成iBATIS

Spring 集成iBATIS:

1. ORM 框架有两种

a. 一种完全依赖它生成SQL代码的框架,开发速度快, 但有时候生成的SQL代码不够高效(Hibernate)
b. 一种是手动编写SQL代码,确保查询到正确的字段来创建相应的JavaBean实例(iBaTIS)

2. Spring 集成iBATIS:

a. 在application.xml 文件种

<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlClientFactoryBean">
<property name="configureLocation" value="sqlMapConfig.xml"/>
<property name="dataSource" ref local="dataSource"/>
</bean>

<bean id="customerDao" class="com.test.customerDAOSqlMapClient">
<property name="sqlMapClient" ref="sqlMapClient"/>
<bean/>

b. 创建sqlMapConfig.xml文件

.....头
<sqlMapConfig>
<sqlMap resource="Customer.xml"/>
</sqlMapConfig>

-----尾

c. 创建Customer.xml

<sqlMap>
<typeAlias type="com.test.Customer" alias="customer"/>
<resultMap class="customer" id="result">
<result property="id" column="id"/>
<result property="firstName" column="First_Name"/>
<result property="lastName" column="Last_Name"/>
</resultMap>
<select id="getCustomerById" resultMap="result" parameterClass="long">
select * from T_Customer where Id=#value#
</select>
//传递MAP 当你只是更新一个有大量例的表的几个字段,最好用MAP
<select id="getCustomerByLastNameAndLastLoginMap" resultMap="result" parameterClass="map">
select * from T_Customer where Last_Name like #lastName# and Last_Login =#lastLogin#
</select>
//传递对象 当你更新表中的大部分或全部例时,最好使用对象
<select id="getCustomerByLastNameAndLastLoginDO" resultMap="result" parameterClass="Customer">
select * from T_Customer where Last_Name like #lastName# and Last_Login =#lastLogin#
</select>

<update id="updateCustomerLastNameDO" parameterClass="Customer">
update T_Customer set Last_Name=#lastName# where Id=#Id#
</update>
insert
delete
</sqlMap>

3. Java 代码, 继承SqlMapClientDaoSupport

public class customerDao extends SqlMapClientDaoSupport{

public Customer getById(long Id){
return (Customer)this.getSqlMapClientTemplate().queryForObject("getCustomerById",Id);
}

public List<Customer> getByLastNameAndLastLoginMap(String lastName,Date lastLogin){
Map<String,Object> parms=new HashMap<String Object>();
parms.put("lastName",lastName);
parms.put("lastLogin",lastLogin);
return this.getSqlMapClientTemplate.queryForObject("getCustomerByLastNameAndLastLoginMap",parms);
}
public List<Customer> getByLastNameAndLastLoginDO(String lastName,Date lastLogin){
Customer customer=new Customer();
customer.setLastName(lastName);
customer.setLastLogin(lastLogin);
return this.getSqlMapClientTemplate.queryForObject("getCustomerByLastNameAndLastLoginDO",customer);
}
public void update(Long id,String lastName){
Customer customer=new Customer();
customer.setLastName(lastName);
customer.setId(id);
return this.getSqlMapClientTemplate.queryForObject("updateCustomerLastNameDO",customer);
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值