700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > mybaits二十七:spring spring mvc mybatis(ssm) 整合

mybaits二十七:spring spring mvc mybatis(ssm) 整合

时间:2019-10-06 13:07:30

相关推荐

mybaits二十七:spring  spring mvc mybatis(ssm) 整合

配置web.xml

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="/xml/ns/javaee" xmlns:xsi="/2001/XMLSchema-instance" xsi:schemaLocation="/xml/ns/javaee /xml/ns/javaee/web-app_2_5.xsd"><!-- <display-name></display-name><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>--><!-- spring配置 --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!-- spring mvc配置 --><servlet><servlet-name>spring</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>spring</servlet-name><url-pattern>/</url-pattern></servlet-mapping></web-app>

配置spring-servlet.xml

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:mvc="/schema/mvc"xmlns:p="/schema/p"xmlns:context="/schema/context"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans.xsd/schema/context/schema/context/spring-context.xsd/schema/mvc/schema/mvc/spring-mvc.xsd"><!-- springmvc只是控制网站跳转逻辑 --><!-- 只扫描控制器 --><context:component-scan base-package="com.atChina" use-default-filters="false"><context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/></context:component-scan><!-- 视图解析器 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/pages/"/><property name="suffix" value=".jsp"/></bean><mvc:annotation-driven></mvc:annotation-driven><mvc:default-servlet-handler/></beans>

配置applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?><!-- 引用Spring的多个Schema空间的格式定义文件 --><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance" xmlns:p="/schema/p"xmlns:context="/schema/context"xmlns:aop="/schema/aop" xmlns:tx="/schema/tx"xsi:schemaLocation="/schema/beans /schema/beans/spring-beans.xsd/schema/context/schema/context/spring-context.xsd/schema/aop/schema/aop/spring-aop.xsd/schema/tx/schema/tx/spring-tx.xsd "><!-- xmlns:mybatis-spring="/schema/mybatis-spring"/schema/mybatis-spring /schema/mybatis-spring-1.2.xsd --><context:component-scan base-package="com.atChina"><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/></context:component-scan><!-- spring用来控制业务逻辑,数据源,事物控制,aop --><bean id="dataSource" class="com.mchange.boPooledDataSource"><property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:orcl"></property><property name="driverClass" value="oracle.jdbc.OracleDriver"></property><property name="user" value="scott"></property><property name="password" value="123456"></property></bean><!-- spring事务管理 --><bean id="dataSourceTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"></property></bean><!-- 开启基于注解的事务 --><tx:annotation-driven transaction-manager="dataSourceTransactionManager"/><!-- 整合mybatis目的: 1. spring管理所有组件,包括mapper的实现类.2. spring用来管理事务--><!-- 创建sqlSessionFactory对象 --><bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"></property><!-- configLocation指定全局配置文件的位置 --><property name="configLocation" value="classpath:mybatis-config.xml"></property><!-- 指定mapper文件的位置 --><property name="mapperLocations" value="classpath:mybatis/mapper/*.xml"></property></bean><!-- 配置mapper扫描器 --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><!-- 扫描包路径,如果需要扫描多个包中间用半角逗号隔开 --><property name="basePackage" value="com.atChina.dao"></property><property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBean"/></bean><!-- 扫描所有的mapper接口实现,让这些mapper能够自动注入 <mybatis-spring:scan base-package="com.atChina.dao"/>--></beans>

配置mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-////DTD Config 3.0//EN""/dtd/mybatis-3-config.dtd"><configuration><settings><setting name="cacheEnabled" value="true"/><setting name="jdbcTypeForNull" value="NULL"/><!--开启延迟加载--><setting name="lazyLoadingEnabled" value="true"/><!--关闭积极加载--><setting name="aggressiveLazyLoading" value="false"/></settings></configuration>

配置文件结构如下

EmployeeService类

package com.atChina.service;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import com.atChina.bean.Employee;import com.atChina.dao.EmployeePlusMapper;@Servicepublic class EmployeeService {@Autowiredprivate EmployeePlusMapper employeePlusMapper;public List<Employee> getEmps(){return employeePlusMapper.getEmps();}}

EmployeeController类

package com.atChina.controller;import java.util.List;import java.util.Map;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import com.atChina.bean.Employee;import com.atChina.service.EmployeeService;@Controllerpublic class EmployeeController {@AutowiredEmployeeService employeeService;@RequestMapping("/getemps")public String emps(Map<String, Object> map){List<Employee> emps = employeeService.getEmps();map.put("allEmps", emps);return "list";}}

bean类

package com.atChina.bean;import java.io.Serializable;import java.util.Date;public class Employee implements Serializable{/*** */private static final long serialVersionUID = 1L;public Employee(String empno, String ename, String job, Integer mgr,Date hiredate, Double sal) {super();this.empno = empno;this.ename = ename;this.job = job;this.mgr = mgr;this.hiredate = hiredate;this.sal = sal;}public Employee() {super();}private String empno;private String ename;private String job;private Integer mgr;private Date hiredate;private Double sal;private Department dt;public String getEmpno() {System.out.println("...getEmpno()....");return empno;}public void setEmpno(String empno) {this.empno = empno;}public String getEname() {return ename;}public void setEname(String ename) {this.ename = ename;}public String getJob() {return job;}public void setJob(String job) {this.job = job;}public Integer getMgr() {return mgr;}public void setMgr(Integer mgr) {this.mgr = mgr;}public Date getHiredate() {return hiredate;}public void setHiredate(Date hiredate) {this.hiredate = hiredate;}public Double getSal() {return sal;}public void setSal(Double sal) {this.sal = sal;}public Department getDt() {return dt;}public void setDt(Department dt) {this.dt = dt;}@Overridepublic String toString() {return "Employee [empno=" + empno + ", ename=" + ename + ", job=" + job+ ", mgr=" + mgr + ", hiredate=" + hiredate + ", sal=" + sal+ ", dt=" + dt + "]";}}package com.atChina.bean;import java.io.Serializable;import java.util.List;public class Department implements Serializable{/*** */private static final long serialVersionUID = 1L;private Integer id;private List<Employee> emps;public List<Employee> getEmps() {return emps;}public void setEmps(List<Employee> emps) {this.emps = emps;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}private Integer deptno;private String dname;private String loc;public int getDeptno() {return deptno;}public void setDeptno(int deptno) {this.deptno = deptno;}public String getDname() {return dname;}public void setDname(String dname) {this.dname = dname;}public String getLoc() {return loc;}public void setLoc(String loc) {this.loc = loc;}@Overridepublic String toString() {return "Department [id=" + id + ", emps=" + emps + ", deptno=" + deptno+ ", dname=" + dname + ", loc=" + loc + "]";}}

Mapper类

package com.atChina.dao;import java.util.List;import com.atChina.bean.Employee;public interface EmployeePlusMapper {public Employee getEmpAndDeptByEmpno(Integer empno);public List<Employee> getEmps();}

Mapper.xml文件

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-////DTD Mapper 3.0//EN""/dtd/mybatis-3-mapper.dtd"><!-- namespace不能随便自定义了,应该是接口类的全限定名 --><mapper namespace="com.atChina.dao.EmployeePlusMapper"><resultMap type="com.atChina.bean.Employee" id="defineDifEmp2"><id column="empno" property="empno" /><result column="ename" property="ename" /><result column="job" property="job" /><result column="mgr" property="mgr" /><result column="hiredate" property="hiredate" /><result column="sal" property="sal" /><!-- association可以指定联合的javaBean对象property="dt":指定哪个属性是联合的对象javaType:指定这个属性对象的类型[不能省略]--><association property="dt" javaType="com.atChina.bean.Department"><result column="deptno" property="deptno" /><result column="dname" property="dname" /><result column="loc" property="loc" /></association></resultMap><select id="getEmpAndDeptByEmpno" resultMap="defineDifEmp2">select a.empno, a.ename, a.job, a.mgr, a.hiredate, a.sal,b.deptno, b.dname, b.loc from emptest a join depttest bon a.deptno = b.deptnowhere a.empno = #{empno}</select><select id="getEmps" resultType="com.atChina.bean.Employee">select a.empno, a.ename, a.job, a.mgr, a.hiredate, a.salfrom emptest a </select></mapper>

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><base href="<%=basePath%>"><title>My JSP 'index.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"></head><body><a href="getemps">查询员工</a></body></html>

list.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@taglib prefix="c" uri="/jsp/jstl/core" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>员工列表</title></head><body><table><tr><td>empno</td><td>ename</td><td>job</td><td>mgr</td><td>hiredate</td><td>sal</td></tr><c:forEach items="${allEmps}" var="emp"><tr><td>${emp.empno}</td><td>${emp.ename}</td><td>${emp.job}</td><td>${emp.mgr}</td><td>${emp.hiredate}</td><td>${emp.sal}</td></tr></c:forEach></table></body></html>

测试如下:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。