spring相关

1Spring核心模块组成

3springapplicationContext.xml文件的读取代码:

Resource resource = new ClassPathResource(“applicationContext.xml”);

//或者Resosurce resource = new

FileSysemResource(“D:\\workspace\\demo\\src\\applicationContext.xml”);

绝对路径也可以改成相对路径

FileSysemResource(“src\\applicationContext.xml”);

备注:这里的applicationContext.xml是放在src目录下的,src目录下的在发布的时候一般是打成.jar文件的,所以我们应该把applicationContext.xml文件放在WEB-INF/lib下,这样的话程序就应该通过.getRealPath来寻找该配置文件

XmlBeanFactory beanfac = new XmlBeanFactory(resource);

Beanfac.getBean(“logindao”);

applicationContext.xml文件里的配置:

<bean id=”logindao” class=”com.sun.demo.LoginDaoHibernate”></bean>//红色部分可以替换为其他的类,例如LoginDaoJdbc.

6<bean id=”userdao” class=”com.sun.demo.UserDaoImpl”>

<property name=”emp”>

<ref bean=”e”/>

</property><!—调用类UserDaoImpl中的userdao.setEmp(e)à

<property name=”username”>

<value>gaoge</value>

</property>

<!—UserDaoImpl类中的username类型是String类型的,调用userdao.setUsername(“gaoge”)à

<property name=”date”>

<ref bean=”d”/>

</property>

<!—UserDaoImpl类中的date类型是Date类型的,调用userdao.setDate(“date”)à

</bean>

<bean id=”e” class=”com.sun.demo.Emp”><!—相当于Emp e = new Emp();à

<bean id=”d” class=”java.util.Date”></bean>

7、容器实例化

基于多配置文件的加载

String [] configFile = {“applicationContext.xml”};

ApplicationContext ac= new ClassPatchXmlApplicationContext(configFile);

BeanFactory bean = (BeanFactory)ac;

源代码示例:

ApplicationContext ctx = new

ClassPathXmlApplicationContext(“applicationContext.xml”);

IUserDao userdao = (IUserDao)ctx.getBean(“applicationContext.xml”);

Userdao.addUser();

备注:ApplicationContext是只要取一个节点,就会把applicationContext.xml里所有的节点都给实例化出来,而XmlBeanFactory是延迟加载,只实例化程序使用到的节点。

8applicationContext.xml文件里节点配置构造函数

<bean id=”user” class=”com.sun.demo.User”>

<constructor-arg index=”0” value=”dddddd”></constructor-arg>

<constructor-arg index=”1” ref=”date”></constructor-arg>

</bean>

<bean id=”date” class=”java.util.Date”/>

1、 SpringHibernate的支持

先安装spring,再安装hibernate,Hibernate中一以前的hibernate.cfg.xml文件中的配置信息放到applicationContext.xml中。让SpringHibernate进行管理。

1)、HibernateTemplate的使用

源代码:UserDao.java

Public class UserDao extends HibernateTemplate{

Private SessionFactory sessionFactory;//此处必须为sessionFactory

Public static void main(String[]args){

ApplicationContext ctx = new ClassPathXmlApplicationContext(“applicationContext.xml”);

Userinfo u = ctx.getBean(“userinfo”);

This.save(u)

}

Public void setSsessionFactory (SessionFactoy sf){

This.sf = sf;

}

}

ApplicationContext.xml

<bean id=”userdao” class=”com.sun.demo.UserDao”>

<property name=” sessionFactory”>

<ref name=”mySessionFactory”/>//此处的mySessionFactory是该配置文件创建的时候设置好的,相当于Hibernate中的SessionFactory.

</proerty>

</bean>

备注:不用创建session,也不用手动提交事务,关闭事务,Spring都已经封装好了。

(2)HibernateDaoSupport的使用

源代码:StaffDao.java

Public class StaffDao extends HibernateDaoSupport{

Public static void main(String[]args){

ApplicationContext ctx = new

ClassPathXmlApplicationContext(“applicationContext.xml”);

Userinfo u = ctx.getBean(“userinfo”);

This.getHibernateTemplate.save(u)

}

}

ApplicationContext.xml

<bean id=”staffdao” class=”com.sun.demo.StaffDao”>

<property name=” sessionFactory”>

<ref name=”mySessionFactory”/>//此处的mySessionFactory是该配置文件创建的时候设置好的,相当于Hibernate中的SessionFactory.

</proerty>

</bean>

备注:HibernateDaoSupport继承了HibernateTemplate,并将HibernateTemplate中的

SessionFactory sessionFactory;

Public void setSessonFactory(SessionFactory sessionFactory){

This.sessionFactory = sesssionFactory;

}

这几句话封装了起来。

增删改语句:

修改:

Userinfo u = new Userinfo();

u.setUserid(“9001”);//9001是数据库中已经存在的记录

u.setUsername(“gaoge”)

this.getHibernateTemplate.update(u);

删除:

Userinfo u = new Userinfo(“9001”);

This.getHibernateTemplate.delete(u);

批量修改

This.getHibernateTemplate().execute(new HibernateCallback(){

Public Object doInHibernate(Session session)

Throws HibernateException,SQLException{

Query q = session.createQuery(“update Userinfo set

username=’zhangsan’”);

q.executeUpdate();//executeUpdate():批量修改

return null;

}

});

加载:Userinfo u =

(Userinfo)this.getHibernateTemplate.get(Userinfo.class,”1001”);

插入或更新

Userinfo u = new Userinfo(“5006”,”yaoming”,”male”,”22”);

This.getHibernateTemplate().saveOrUpdate(u);

分页查询

List list = (List)This.getHibernateTemplate().execute(new HibernateCallback(){

Public Object doInHibernate(Session session)

Throws HibernateException,SQLException{

Query q = session.createQuery(“from Userinfo”);

q.setFirstResult(3); //executeUpdate():批量修改

q.setMaxResults(3);

return q.list();

}

});








你可能感兴趣的:(spring,Hibernate,bean,xml,sun)