编程语言
834
一、思路
SSH --> Spring+SpringMVC+MyBatis
SM整合 --> SS整合 -->SSM
二、大体框架
三、Spring整合MyBatis
SqlSessionFactory ->SqlSession -> StudentMapper ->CRUD
MyBatis最终通过SqlSessionFactory 来操作数据库,Spring整合MyBatis,其实就是将MyBatis的SqlSessionFactory交给Spring。
1、jar包
2、配置
与spring整合时,mybatis的配置文件conf.xml(数据源+mapper.xml)可省,将其配置在applicationContext.xml中。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="config" class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer"> <property name="locations"> <array> <value>classpath:db.properties</value> </array> </property> </bean> <!-- 配置数据库信息(替代mybatis的配置文件confx.ml) --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="${driver}"></property> <property name="url" value="${url}"></property> <property name="username" value="${username}"></property> <property name="password" value="${password}"></property> </bean> <!-- 在springIOC中创建mybatis的核心类SqlSessionFactoryBean --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <property name="mapperLocations" value="classpath:com/guor/mapper/*.xml"></property> </bean> <bean id="studentService" class="com.guor.service.impl.StudentServiceImpl"> <property name="studentMapper" ref="studentMapper"></property> </bean> <!-- 批量产生mapper对象在IOC中的id值默认就是接口名--> <bean id="mappers" class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property> <!-- 指定批量产生哪个包的mapper对象 --> <property name="basePackage" value="com.guor.mapper"></property> </bean> </beans> driver=oracle.jdbc.OracleDriver url=jdbc:oracle:thin:@127.0.0.1:1521:ORCL username=orcl password=orcl
3、编写代码
(1)entity
package com.guor.entity; public class Student { private int id; private String name; private int age; ... }
(2)mapper
package com.guor.mapper; import com.guor.entity.Student; public interface StudentMapper { public void addStudent(Student student); public Student queryStudentByStuNo(int id); } <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.guor.mapper.StudentMapper"> <select id="queryStudentByStuNo" parameterType="int" resultType="com.guor.entity.Student"> select * from student where id = #{stuNo} </select> <insert id="addStudent" parameterType="com.guor.entity.Student"> insert into student(id,name,age) values (#{id},#{name},#{age}) </insert> </mapper>
(3)service(面向接口编程)
package com.guor.service; import com.guor.entity.Student; public interface IStudentService { public void addStudent(Student student); public Student queryStudentByStuNo(int id); } package com.guor.service.impl; import com.guor.entity.Student; import com.guor.mapper.StudentMapper; import com.guor.service.IStudentService; public class StudentServiceImpl implements IStudentService { private StudentMapper studentMapper; public void setStudentMapper(StudentMapper studentMapper) { this.studentMapper = studentMapper; } @Override public void addStudent(Student student) { studentMapper.addStudent(student); } @Override public Student queryStudentByStuNo(int id) { return studentMapper.queryStudentByStuNo(id); } }
(4)controller
package com.guor.controller; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import com.guor.entity.Student; import com.guor.service.IStudentService; @Controller @RequestMapping("studentController") public class StudentController { @Autowired @Qualifier("studentService") private IStudentService studentService; public void setStudentService(IStudentService studentService) { this.studentService = studentService; } @RequestMapping("queryStudentByStuNo/{id}")//映射 public String queryStudentByStuNo(@PathVariable("id") Integer id,Map<String,Object> map) { Student student = studentService.queryStudentByStuNo(id); map.put("student", student); return "result"; } }
四、Spring整合SpringMVC
1、jar包
一个就行,spring-webmvc-4.3.9.RELEASE.jar
2、配置
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <!-- 扫描有注解的包 --> <context:component-scan base-package="com.guor.controller"></context:component-scan> <!-- 配置视图解析器(InternalResourceViewResolver) --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/views/"></property> <property name="suffix" value=".jsp"></property> </bean> <!-- springMVC基础配置、标配 --> <mvc:annotation-driven></mvc:annotation-driven> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="mappingJacksonHttpMessageConverter" /> </list> </property> </bean> <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> </list> </property> </bean> <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <!-- <property name="exceptionAttribute" value = "ex"></property> 异常变量的默认值是exception--> <property name="exceptionMappings"> <props> <!-- 相当于catch --> <prop key="java.lang.ArithmeticException"> error </prop> <prop key="java.lang.NullPointException"> error </prop> </props> </property> </bean> </beans>
3、index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <a href="studentController/queryStudentByStuNo/3">queryStudentByStuNo</a> </body> </html>
4、运行
