spring相关

    技术2022-05-11  13

    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();

    }

    });

     

     


    最新回复(0)