Springmvc 配置(spring+hibernate+springmvc)

Springmvc 配置(spring+hibernate+springmvc)

新建web项目

导入jar 包


以上包再加上spring的所有jar包

目录结构如下:


建立包

entity ,dao, manager,web,

Spring 的配置文件全部放在config/spring目录下,包括数据库配置,这里将不再使用hibernate.cfg.xml进行配置,而是将其放在

spring-common.xml 里边。

我们将要配置的xml文件如下:


Web.Xml配置

  <!-- 配置字符集 --> 

  <filter> 

   <filter-name>encodingFilter</filter-name> 

    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 

    <init-param> 

       <param-name>encoding</param-name> 

        <param-value>UTF-8</param-value> 

   </init-param> 

   <init-param> 

       <param-name>forceEncoding</param-name> 

       <param-value>true</param-value> 

   </init-param> 

 </filter> 

  <filter-mapping> 

    <filter-name>encodingFilter</filter-name> 

    <url-pattern>/*</url-pattern> 

  </filter-mapping> 

   

     <!-- 加载所有的配置文件 --> 

 <context-param> 

   <param-name>contextConfigLocation</param-name> 

   <param-value>classpath*:config/spring/spring-*.xml</param-value> 

 </context-param> 

   

 <!-- 配置Spring监听  -->

 <listener> 

   <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 

 </listener> 

 

  <!-- 配置SpringMVC --> 

 <servlet> 

   <servlet-name>springMVC</servlet-name> 

   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 

   <init-param> 

        <param-name>contextConfigLocation</param-name> 

        <param-value>classpath*:config/spring/spring-mvc.xml</param-value> 

   </init-param> 

   <load-on-startup>1</load-on-startup> 

 </servlet> 

 <servlet-mapping> 

   <servlet-name>springMVC</servlet-name> 

   <url-pattern>/</url-pattern> 

  </servlet-mapping>    

spring-mvc.xml配置

  <!-- 注解扫描包 --> 

   <context:component-scanbase-package="com"/> 

 

   <!-- 开启注解 --> 

   <mvc:annotation-driven/> 

     

   <!-- 静态资源(js/image)的访问 --> 

   <mvc:resourceslocation="/js/"mapping="/js/**"/> 

    <mvc:resourceslocation="/image/"mapping="/image/**"/> 

   <!-- 定义视图解析器 -->   

   <beanid="viewResolver"class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 

        <propertyname="prefix"value="/jsp/"></property> 

        <propertyname="suffix"value=".jsp"></property> 

</bean>

 

spring-common.xml配置

<!-- 配置数据源 --> 

   <beanid="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 

        <propertyname="driverClassName"value="org.gjt.mm.mysql.Driver"></property> 

        <propertyname="url"value="jdbc:mysql:///world"></property> 

        <propertyname="username"value="root"></property> 

        <propertyname="password"value="root"></property> 

   </bean> 

     

   <!-- 配置SessionFactory --> 

   <beanid="sessionFactory"class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 

        <propertyname="dataSource"ref="dataSource"/> 

        <propertyname="hibernateProperties"> 

            <props> 

                <propkey="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> 

                <propkey="hibernate.hbm2ddl.auto">update</prop> 

                <propkey="hibernate.show_sql">true</prop> 

                <propkey="hibernate.format_sql">true</prop> 

            </props> 

        </property> 

        <propertyname="annotatedClasses"> 

            <list> 

                <value>com.test.entity.Book</value> 

            </list> 

        </property> 

   </bean> 

     

   <!-- 配置一个事务管理器 --> 

   <beanid="transactionManager"class="org.springframework.orm.hibernate4.HibernateTransactionManager"> 

        <propertyname="sessionFactory"ref="sessionFactory"/> 

   </bean> 

     

   <!-- 配置事务,使用代理的方式 --> 

   <beanid="transactionProxy"class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"abstract="true">   

        <propertyname="transactionManager"ref="transactionManager"></property>   

        <propertyname="transactionAttributes">   

            <props>   

                <propkey="add*">PROPAGATION_REQUIRED,-Exception</prop>   

                <propkey="modify*">PROPAGATION_REQUIRED,-myException</prop>   

                <propkey="del*">PROPAGATION_REQUIRED</prop>   

                <propkey="*">PROPAGATION_REQUIRED</prop>   

            </props>   

        </property>   

    </bean>  

后台代码:

例子:Book增删改查的基本操作


Book.java(实体类)(jpa自动生成代码,这里的主键ID使用的是uuid)

package com.test.entity;

import java.io.Serializable;

import javax.persistence.*;

importorg.hibernate.annotations.GenericGenerator;

/**

 *The persistent class for the book database table.

 *

 */

@Entity

@Table(name="book") 

public class Book implements Serializable {

         privatestatic final long serialVersionUID = 1L;

   @Id 

    @GeneratedValue(generator="system-uuid") 

   @GenericGenerator(name ="system-uuid",strategy="uuid") 

   @Column

         privateint id;

   @Column

   private String auther;

   @Column

   private String bookname;

   @Column

   private String isbn;

   @Column

   private int price;

   @Column

   private int stock;

         publicBook() {

         }

         publicint getId() {

                   returnthis.id;

         }

         publicvoid setId(int id) {

                   this.id= id;

         }

         publicString getAuther() {

                   returnthis.auther;

         }

         publicvoid setAuther(String auther) {

                   this.auther= auther;

         }

         publicString getBookname() {

                   returnthis.bookname;

         }

         publicvoid setBookname(String bookname) {

                   this.bookname= bookname;

         }

         publicString getIsbn() {

                   returnthis.isbn;

         }

         publicvoid setIsbn(String isbn) {

                   this.isbn= isbn;

         }

         publicint getPrice() {

                   returnthis.price;

         }

         publicvoid setPrice(int price) {

                   this.price= price;

         }

         publicint getStock() {

                   returnthis.stock;

         }

         publicvoid setStock(int stock) {

                   this.stock= stock;

         }

}

Service的代码:

BookDao

package com.test.dao;

import java.util.List;

import com.test.entity.Book;

public interface BookDao {

        

   public Book getBook(String id); 

   

   public List<Book> getAllBook(); 

     

   public void addBook(Book book); 

     

   public boolean delBook(String id); 

     

public booleanupdateBook(Book book); 

}

BookDaoImpl

package com.test.dao;

import java.util.List;

import org.hibernate.Query;

import org.hibernate.SessionFactory;

import com.test.entity.Book;

public class BookDaoImpl implements BookDao {

   private SessionFactory sessionFactory; 

   

   public void setSessionFactory(SessionFactory sessionFactory) { 

       this.sessionFactory = sessionFactory; 

   } 

   @Override

   publicBook getBook(String id) {

      //TODO Auto-generated method stub

       String hql = "from book u where u.id=?";  

       Query query = sessionFactory.getCurrentSession().createQuery(hql); 

       query.setString(0, id); 

         

       return (Book)query.uniqueResult(); 

   }

   @Override

   publicList<Book> getAllBook() {

      //TODO Auto-generated method stub

        String hql = "from book"; 

       Query query = sessionFactory.getCurrentSession().createQuery(hql); 

         

       return query.list(); 

   }

   @Override

   publicvoid addBook(Book book) {

      //TODO Auto-generated method stub

      sessionFactory.getCurrentSession().save(book); 

   }

   @Override

   publicboolean delBook(String id) {

      //TODO Auto-generated method stub

       String hql = "delete book u where u.id = ?"; 

       Query query = sessionFactory.getCurrentSession().createQuery(hql); 

       query.setString(0, id); 

         

       return (query.executeUpdate() > 0); 

   }

   @Override

   publicboolean updateBook(Book book) {

      //TODO Auto-generated method stub

       String hql = "update book u set u.bookname = ?,u.isbn=?,u.price=?,u.stock=?where u.id = ?"; 

       Query query = sessionFactory.getCurrentSession().createQuery(hql); 

       query.setString(0, book.getAuther()); 

       query.setString(1, book.getBookname()); 

       query.setString(2, book.getIsbn()); 

        query.setInteger(3, book.getPrice());

       query.setInteger(4, book.getStock());

       return (query.executeUpdate() > 0); 

   }

}

BookManager

package com.test.manager;

import java.util.List;

import com.test.entity.Book;

public interface BookManager {

   public Book getBook(String id); 

   

   public List<Book> getAllBook(); 

     

   public void addBook(Book book); 

     

   public boolean delBookr(String id); 

     

   public boolean updateBook(Book book); 

}

BookManagerImpl

package com.test.manager;

import java.util.List;

import com.test.dao.BookDao;

import com.test.entity.Book;

public class BookManagerImpl implementsBookManager {

         privateBookDao bookDao;

        

         publicvoid setBookDao(BookDao bookDao) {

                   this.bookDao= bookDao;

         }

         @Override

         publicBook getBook(String id) {

                   //TODO Auto-generated method stub

                   returnbookDao.getBook(id);

         }

         @Override

         publicList<Book> getAllBook() {

                   //TODO Auto-generated method stub

                   returnbookDao.getAllBook();

         }

         @Override

         publicvoid addBook(Book book) {

                   //TODO Auto-generated method stub

                    bookDao.addBook(book);

         }

         @Override

         publicboolean delBookr(String id) {

                   //TODO Auto-generated method stub

                   returnbookDao.delBook(id);

         }

         @Override

         publicboolean updateBook(Book book) {

                   //TODO Auto-generated method stub

                   returnbookDao.updateBook(book);

         }

}

control的代码:

控制器后面在补充:

接下来是将bookDao注入


spring-beans.xml

 

<beanid="bookDao"class="com.test.dao.BookDaoImpl"> 

        <propertyname="sessionFactory"ref="sessionFactory"></property> 

   </bean> 

 

   <beanid="bookManagerBase"class="com.test.manager.BookManagerImpl"> 

        <propertyname="bookDao"ref="bookDao"></property> 

   </bean> 

     

   <!-- 此处为代理 --> 

   <beanname="bookManager"parent="transactionProxy"> 

        <propertyname="target"ref="bookManagerBase"></property> 

    </bean>  

 启动项目没有报错则说名配置没问题,数据库的连接以及bean注入等都没问题,接下来可以测试一下是否正确。

猜你喜欢

转载自blog.csdn.net/qi95719/article/details/53057184