Spring自动注入byType

**1.applicationContext.xml配置文件**
<!-- 配置dao层bean -->
		<bean id="edi" class="dao.impl.EmpDaoImpl">
			<property name="sessionFactory" ref="sessionFactory"></property>
		</bean>
// autowire-candidate:候选类,false则不候选,避免byType多个实体类的问题
<bean id="edi2" class="dao.impl.EmpDaoImpl2" autowire-candidate="false">			<property name="sessionFactory" ref="sessionFactory"></property>
		</bean>
//autowire:自动注入:byName/byType/construtor
//byType:如果实现同一个接口的实现类有多个,那么byType就会报错
		<bean id="empBiz" class="biz.impl.EmpBizImpl" autowire="byType">
			<!-- <property name="edi" ref="edi"></property> -->
		</bean>
	
		<bean id="ea" class="action.EmpAction" scope="prototype">
			<property name="empBiz" ref="empBiz"></property>
		</bean>

2.EmpDao接口类

package dao;

import java.util.List;

import entity.Emp;

public interface EmpDao {

	public List<Emp> findAllEmp();
	public List<Emp> findEmpByCondition(Emp e);
	public List<Emp> findEmpByNameParam(Emp e);
	public List<Emp> findEmpByExemple(Emp e);
	public Emp findEmpById(int id);
	public int addEmp(Emp e);
	public void modify(Emp e);
	public List<Emp> findEmpByPage(int pageNo,int pageSize);
	public void updateBatchEmpSal(double sal);
}

3.EmpDaoImpl实现类

package dao.impl;

import java.sql.SQLException;
import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import entity.Emp;
import dao.*;

public class EmpDaoImpl extends HibernateDaoSupport implements EmpDao {
	// 参数数组
	@SuppressWarnings("unchecked")
	@Override
	public List<Emp> findAllEmp() {
		List<Emp> elist = this.getHibernateTemplate().find(
				"from Emp where empno=? and ename=?",
				new Object[] { 7788, "SCOTT" });

		return elist;
	}

	// 对象作为参数数组
	@Override
	public List<Emp> findEmpByCondition(Emp e) {
		@SuppressWarnings("unchecked")
		List<Emp> elist = this.getHibernateTemplate().find(
				"from Emp where empno=? and ename=?",
				new Object[] { e.getEmpno(), e.getEname() });
		return elist;
	}

	// 命名查询
	@SuppressWarnings("unchecked")
	@Override
	public List<Emp> findEmpByNameParam(Emp e) {
		@SuppressWarnings("unchecked")
		String param[] = { "empno", "ename" };
		Object value[] = { e.getEmpno(), e.getEname() };
		List<Emp> elist = this.getHibernateTemplate().findByNamedParam(
				"from Emp where empno=:empno and ename=:ename", param, value);
		return elist;
	}

	// 通过对象
	@Override
	public List<Emp> findEmpByExemple(Emp e) {
		@SuppressWarnings("unchecked")
		List<Emp> elist = this.getHibernateTemplate().findByExample(e);
		return elist;
	}

	// 通过对象
	@Override
	public Emp findEmpById(int id) {
		Emp e = this.getHibernateTemplate().get(Emp.class, id);
		return e;
	}

	// 添加对象
	@Override
	public int addEmp(Emp e) {
		int result = (Integer) this.getHibernateTemplate().save(e);
		return result;
	}

	// 修改对象
	@Override
	public void modify(Emp e) {
		this.getHibernateTemplate().update(e);

	}

	// 分页查询
	@SuppressWarnings({ "unchecked", "rawtypes" })
	@Override
	public List<Emp> findEmpByPage(final int pageNo,final int pageSize) {
		List<Emp> elist = getHibernateTemplate().execute(
				new HibernateCallback() {

					@Override
					public Object doInHibernate(Session session)
							throws HibernateException, SQLException {
						Query query = session.createQuery("from Emp");
						query.setFirstResult((pageNo-1)*pageSize);
						query.setMaxResults(pageSize);
						return query.list();
					}
				});
		return elist;
	}
//批量处理
	@SuppressWarnings({ "unchecked", "rawtypes" })
	public void updateBatchEmpSal(final double sal){
		int result=getHibernateTemplate().execute(
				new HibernateCallback() {

					@Override
					public Object doInHibernate(Session session)
							throws HibernateException, SQLException {
					Query query=session.createQuery("update Emp set sal=sal+?");
					query.setParameter(0,sal);
					return 	query.executeUpdate();
					}
					
				}
				);
		System.out.println(result);
	}
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值