spring springmvc hibernate整合之java web 项目

主要是配置applicationContext和springmvc.xml

applicationContext.xml包括引入数据库属性文件,组件扫描排除controller层的service层和dao层

创建dataSource的bean对象及其属性,属性时数据库连接的属性,

创建sqlSession的bean对象,注入数据源,配置hibernate的属性sql的格式化,创建表,方言;

创建事务管理的bean对象,注入sqlSession对象,

使用事务管理的注解方式:<tx:annotation-driven transationManager="transationManager"/>

springmvc.xml


组件扫描包含controller层 排除service层和dao层

配置内容协商管理bean对象 包含 媒体类型属性和默认内容类型;

《mvc:anotation-driven》

mvc:default-servlet-handler

和视图解析器 前缀和后缀


实体类 ,@Entity @Table

(name = "person")
  controller类@Controller  service类 @Service   dao类采用注解方式@Repository;

类里采用

@Autowired
  private PersonService personService;
@Autowired
public PersonDAO personDAO;
@Resource
private SessionFactory sessionFactory;

自动注入要调用 的类;

采用此类注解,配置文件里就不用配置相应bean对象;



1、引入相应的jar包,spring的包:spring-aop spring-aspect  spring-context spring-beans spring-core spring-orm spring-expression  spring-tx spring-test spring-web   spring-jdbc  大概11个

hibernate包:hibernate3  ,lib下required下的包:jta  javaassist  slf4j  commons-collections dom4j antrl   及hibernate-jpa 大概8个

还有mysql-connect-java  

sping依赖的包  spingsource...mchange...c3p0    springsource....commons-logging    spingsource..aop.. springsource...aspect... springsource.log4j.slf4j-log4j大约7个


2

建立包及类 com.mz.wfy.domain       Person.java

private String id;// 主键id
 name;// 姓名
idCard;// 身份证号
 phone;// 手机号
 address;// 
以上都是string类型    封装 和 toString 方法       get方法使用注解 
@Id
@Column(name = "id", nullable = false, unique = true)
@GenericGenerator(name = "generator", strategy = "uuid")
@GeneratedValue(generator = "generator")
@Column(name = "name", nullable = false, length = 32)
 
 

建立对应的hibernate  映射文件User.hbm.xml 使数据库的表和实体映射;hibernate-mapping   中有class  节点(name table 属性)下面有id (包括generator节点)property节点(name colomn属性)



  com.mz.wfy.controller PersonController.java

@SessionAttributes(value = "username")
@Controller    //使用该注解标志它是一个控制器
@RequestMapping(value = "/person")
public class PersonController {

   @Autowired
   public PersonService personService;

   /**
    * 登录请求,失败返回error.jsp
    * 
    * @param username
    * @param password
    * @return
    */
   @RequestMapping("/login")
   public String dologin(String username, String password, Map<String, Object> map) {
      if (username.equals("admin") && password.equals("admin")) {
         map.put("username", username);//存放在request请求域中
         /**
          * 类上加上@SessionAttributes({"username"}) 同时也会存放在 session域中
          * @SessionAttributes 除了可以通过属性名指定需要存放到会话中的属性外(使用的是value属性值)
          * 还可以通过模型属性的对象类型指定哪些模型属性需要放到会话中(实际上使用的是types属性值),
          */
         return "frame";
      }
      return "error";
   }

   /**
    * 保存添加的数据
    * 
    * @param person
    * @return
    */
   @RequestMapping(value = "/saveperson")
   public String saveperson(Person person) {
      personService.addPerson(person);
      return "redirect:main";
   }

   /**
    * 跳转到添加页面
    * savepage.jsp
    * @return
    */
   @RequestMapping(value = "/addperson")
   public String saveperson() {

      return "savepage";
   }

   /**
    * 删除一条数据
    * 
    * @param id
    * @return
    */
   @RequestMapping(value = "/deletePersonById")
   public String deletePersonById(@RequestParam(value = "id") String id) {
      System.out.println("删除单个");
      personService.deletePersonById(id);
      return "redirect:main";
   }

   /**
    * 跳转到更新页面,回显数据
    * editpage.jsp
    * @param id
    * @param model 使用的Model保存回显数据
    * @return
    */
   @RequestMapping(value = "/doupdate")
   public String doupdate(@RequestParam(value = "id") String id, Model model) {
      model.addAttribute("person", personService.getPersonById(id));
      return "editpage";
   }

   /**
    * 更新数据
    * 
    * @param person
    * @return
    */
   @RequestMapping(value = "/updateperson")
   public String updateperson(Person person) {
      System.out.println(person.toString());
      personService.updatePerson(person);
      return "redirect:main";
   }

   /**
    * 查询所有人员信息
    * 
    * @param map 使用的是map保存回显数据
    * @return
    */
   @RequestMapping(value = "/main")
   public String mian(Map<String, Object> map) {
      map.put("personlist", personService.getPersons());
      /*遍历集合,查看查询到的数据
       * List<Person> lists = personService.getPersons(); 
       * Iterator<Person> it = lists.iterator(); 
       * while(it.hasNext()){ 
       *        Person p =it.next();
       *    System.out.println(p.toString());
       *  }
       */
      return "main";
   }
}


com.mz.wfy.service   PersonService    


com.mz.wfy.dao   PersonDao


private Session getSession() {
   return sessionFactory.getCurrentSession();
}
/**
 * 根据id查询
 * @param id
 * @return
 */
public Person getPersonById(String id) {
   return (Person) this.getSession().createQuery("from Person where id=?").setParameter(0, id).uniqueResult();
}
/**
 * 添加
 * @param person
 */
public void addPerson(Person person) {
   this.getSession().save(person);
}
/**
 * 更新
 * @param person
 */
public void updatePerson(Person person) {
   this.getSession().update(person);
}
/**
 * 删除
 * @param id
 */
public void deletePersonById(String id) {
   this.getSession().createQuery("delete Person where id=?").setParameter(0, id).executeUpdate();
}
/**
 * 查询所有
 * @return
 */
@SuppressWarnings("unchecked")
public List<Person> getPersons() {
   return this.getSession().createCriteria(Person.class).list();
}




3.建立各种属性文件和配置文件,A    jdbc.properties   

jdbc.driverClass=com.mysql.jdbc.Driver;     jdbc .url=jdbc:mysql://localhost:3306/sprsh?useUnicode=yes&characterEncoding=utf-8

jdbc.uername=root     jdbc.password=123456 


 B log4j.properties  .........百度搜一下就可以了,这个以后详细研究下;

C applicationContext.xml 



<context:component-scan base-package="com.mz.wfy">
   <context:exclude-filter type="annotation" 
   expression="org.springframework.stereotype.Controller"/>
</context:component-scan>

a  引入外部属性文件 jdbc.properties    使用

<context:property-placeholder  location=“classpath:jdbc.properties”/>

b 配置连接池,datasource数据源bean对象

<bean id="dataSource" class="com.springframework.org.mchange.c3p0....>

<property name="driverClass"   value="${ jdbc .driverClass}"/>

<property name="jdbcUrl" value="${ jdbc .url}"/>

<property name="jdbc.user" value="${ jdbc .username}"/>

<property name="jdbc.password" value="${ jdbc password}/>

</bean>

c 配置hibernate属性 sessionFactory 的bean对象
<bean  id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!--注入连接池-->
<property name="dataSource" ref="dataSource"></property>
<!--配置hibernate相关属性>
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
<!--加载hibernate映射文件-->


<property name="mappingResources">
<list>
<value>com/mz/wyf/Department.hbm.xml</value>
<value>com/mz/wyf/Employee.hbm.xml</value>
</list>
</property>或者
 <property name="packagesToScan">
   <list>
      <value>com.mz.wfy.domain</value>
   </list>
</property>

</bean>



<!--配置action类-->
<bean id="employeeAction" class="com.mz.wfy.action.EmployeeAction.java">
<property name="employeeService" ref="employeeService"></property>
</bean>
<!--配置service类-->
<bean id="employeeService" class="com.mz.wfy.action.EmployeeService.java">
<property name="employeeDao" ref="employeeDao"></property>
</bean>
<!--配置dao类-->
<bean id="employeeService" class="com.mz.wfy.action.EmployeeDao.java">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!--事务管理-->
<bean id="transactonManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>

</bean>


<!--事务管理使用注解的方式-->
<tx:annotation-driven transactonManager="transactonManager" />

</bean>



springmvc.xml


<!--包扫描controller层-->
<!--
<context:component-scan base-package="com.mz.wfy.controller">
<context:exclude-filter type="annotation" expression="org.springframwork.stereotype.Service"/>
</context:component-scan>
-->
<context:component-scan base-package="com.mz.wfy">
<context:include-filter type="annotation" expression="org.springframwork.stereotype.Controller"/>
<context:exclude-filter type="annotation" expression="org.springframwork.stereotype.Service"/>
<context:exclude-filter type="annotation" expression="org.springframwork.stereotype.Repository"/>
</context:component-scan>
<!--配置视图解析器,把handler返回的值解析为为实际的物理图-->
<!--
<bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<bean
class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
</list>
</property>
</bean>


内容协商管理,媒体类型和默认内容类型
<bean id="contentNegotiationManager" class="org.springframwork.web.accept.ContentNegotiationManangerFactoryBean">
<property name="mediaTypes">
<map>
<entry key="json" value="application/json"/>
<entry key="xml" value="application/xml"/>
<entry key="html" value="text/html/>
</map>
</property>
<property name="defaultContentType" value="text/html"/>
</bean>
内容协商管理视图解析 ,解析为实际的物理视图;
<bean class="org.spingfamework.web.servlet.view.ContentNegotiationViewResolver">
<property name="order" value="0"/>
<property name="contentNegotiationManager" ref="contentNegotiationManager"/>
<property name="viewResolvers">
<list>
<bean  class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:order="1">
<property name="prefix" value="/WEB-INF/view/" ></property>
<property name="suffix" value=".jsp" ></property>
</bean>
<bean  class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:order="2">
<property name="prefix" value="/WEB-INF/view/" ></property>
<property name="suffix" value=".html" ></property>
</bean>
<list>
</property>
</bean>
-->




<bean  class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/view/" ></property>
<property name="suffix" value=".jsp" ></property>
</bean>


<!--静态资源交给默认的servlet-->
<mvc:default-servlet-handler/>


<!--代替注解映射器和注解适配器配置requestmappinghandlermapping  requestmappinghandleradapter ,默认加载许多参数绑定的方法-->
<mvc:annotation-driven></mvc:annotation-driven>






  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lozhyf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值