spring+springmvc+mybatis集成
一个核心:将对象交给spring管理。
1新建web项目
2添加项目jar包
spring包见上一篇博客
3建立项目的目录结构
4完成Mapper的集成
和mybatis进行集成,交给spring产生Mapper接口的代理对象。
4.1建立Mapper接口
1 package org.guangsoft.mapper; 2 3 import java.util.List; 4 5 import org.guangsoft.pojo.Privilege; 6 7 public interface PrivilegeMapper 8 { 9 public void addPrivilege(Privilege privilege); 10 public void deletePrivilege(Privilege privilege); 11 public void updatePrivilege(Privilege privilege); 12 public Privilege selectPrivilegeById(Privilege privilege); 13 public List<Privilege> selectAllPrivileges(); 14 }
4.2建立Mapper.xml文件
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 3 <mapper namespace="org.guangsoft.mapper.PrivilegeMapper"> 4 <insert id="addPrivilege" parameterType="org.guangsoft.pojo.Privilege"> 5 insert into privilege values(null,#{pname}) 6 </insert> 7 <delete id="deletePrivilege" parameterType="org.guangsoft.pojo.Privilege"> 8 delete from privilege 9 </delete> 10 <delete id="updatePrivilege" parameterType="org.guangsoft.pojo.Privilege"> 11 update privilege set pname=#{pname} where pid=#{pid} 12 </delete> 13 <select id="selectPrivilegeById" parameterType="org.guangsoft.pojo.Privilege" resultType="org.guangsoft.pojo.Privilege"> 14 select * from privilege where pid=#{pid} 15 </select> 16 <select id="selectAllPrivileges" resultType="org.guangsoft.pojo.Privilege"> 17 select * from privilege 18 </select> 19 </mapper>
4.3建立application_mapper.xml
在config下建立:
配置数据库连接池。
管理SqlSessionFactory,注入DataSource
产生Mapper接口的代理对象。
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans 3 xmlns="http://www.springframework.org/schema/beans" 4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5 xmlns:p="http://www.springframework.org/schema/p" 6 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd"> 7 8 <!-- 数据库连接池 --> 9 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> 10 <!-- 注入数据库连接字符串 --> 11 <property name="driverClass" value="com.mysql.jdbc.Driver"></property> 12 <property name="jdbcUrl" value="jdbc:mysql://127.0.0.1:3306/test"></property> 13 <property name="user" value="root"></property> 14 <property name="password" value="root"></property> 15 </bean> 16 <!-- 实例化sessionFactory --> 17 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 18 <!-- 注入数据库连接池 --> 19 <property name="dataSource" ref="dataSource"></property> 20 </bean> 21 <!-- 产生mapper接口的代理对象 22 mapper接口和mapperxml名字必须一样 23 mapper.java和mapper.xml必须在同一目录下 24 产生的代理对象id文件Mapper接口的第一个字母小写 25 --> 26 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 27 <!-- 注入sessionFactory --> 28 <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property> 29 <!-- 注入扫描的包 --> 30 <property name="basePackage" value="org.guangsoft.mapper"></property> 31 </bean> 32 </beans>
5完成service的功能
5.1建立Service接口
1 package org.guangsoft.service; 2 3 import java.util.List; 4 5 import org.guangsoft.pojo.Privilege; 6 7 public interface PrivilegeService 8 { 9 public void addPrivilege(Privilege privilege); 10 public void deletePrivilege(Privilege privilege); 11 public void updatePrivilege(Privilege privilege); 12 public Privilege selectPrivilegeById(Privilege privilege); 13 public List<Privilege> selectAllPrivileges(); 14 }
5.2建立业务接口实现类
将实现类的对象纳入spring容器。注入Mapper接口的代理对象
1 package org.guangsoft.service.impl; 2 3 import java.util.List; 4 5 import org.guangsoft.mapper.PrivilegeMapper; 6 import org.guangsoft.pojo.Privilege; 7 import org.guangsoft.service.PrivilegeService; 8 import org.springframework.beans.factory.annotation.Autowired; 9 import org.springframework.stereotype.Service; 10 11 @Service 12 public class PrivilegeServiceImpl implements PrivilegeService 13 { 14 /** 15 * 注入Mapper接口的代理对象 16 */ 17 @Autowired 18 private PrivilegeMapper privilegeMapper; 19 20 @Override 21 public void addPrivilege(Privilege privilege) 22 { 23 privilegeMapper.addPrivilege(privilege); 24 } 25 26 @Override 27 public void deletePrivilege(Privilege privilege) 28 { 29 privilegeMapper.deletePrivilege(privilege); 30 } 31 32 @Override 33 public void updatePrivilege(Privilege privilege) 34 { 35 privilegeMapper.updatePrivilege(privilege); 36 } 37 38 @Override 39 public Privilege selectPrivilegeById(Privilege privilege) 40 { 41 return privilegeMapper.selectPrivilegeById(privilege); 42 } 43 44 @Override 45 public List<Privilege> selectAllPrivileges() 46 { 47 return privilegeMapper.selectAllPrivileges(); 48 } 49 50 }
5.3建立application_service.xml
扫描service包
事务配置
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans 3 xmlns="http://www.springframework.org/schema/beans" 4 xmlns:context="http://www.springframework.org/schema/context" 5 xmlns:tx="http://www.springframework.org/schema/tx" 6 xmlns:aop="http://www.springframework.org/schema/aop" 7 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 8 xmlns:p="http://www.springframework.org/schema/p" 9 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 10 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd 11 http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd 12 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd"> 13 14 <!-- 开启service包的扫描 --> 15 <context:component-scan base-package="org.guangsoft.service.impl"></context:component-scan> 16 <!-- 配置事务 实例化事务管理器 --> 17 <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 18 <property name="dataSource" ref="dataSource"></property> 19 </bean> 20 <!-- 配置切面 --> 21 <tx:advice id="txAdvice" transaction-manager="transactionManager"> 22 <tx:attributes> 23 <tx:method name="add*" isolation="DEFAULT" propagation="REQUIRED"/> 24 </tx:attributes> 25 </tx:advice> 26 <aop:config> 27 <aop:pointcut expression="execution(* org.guangsoft.service.impl.*.*(..))" id="pc"/> 28 <aop:advisor advice-ref="txAdvice" pointcut-ref="pc"/> 29 </aop:config> 30 </beans>
6完成Action的功能
6.1建立Handler处理器
1 package org.guangsoft.controller; 2 3 import org.guangsoft.pojo.Privilege; 4 import org.guangsoft.service.PrivilegeService; 5 import org.springframework.beans.factory.annotation.Autowired; 6 import org.springframework.stereotype.Controller; 7 import org.springframework.web.bind.annotation.RequestMapping; 8 9 @Controller 10 public class PrivilegeController 11 { 12 @Autowired 13 private PrivilegeService privilegeService; 14 //定义菜单项求求的方法 15 @RequestMapping("/addPrivilege") 16 public String addPrivilege(Privilege privilege) 17 { 18 privilegeService.addPrivilege(privilege); 19 return "index.jsp"; 20 } 21 }
6.2建立springmvc的配置文件
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans 3 xmlns="http://www.springframework.org/schema/beans" 4 xmlns:context="http://www.springframework.org/schema/context" 5 xmlns:mvc="http://www.springframework.org/schema/mvc" 6 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 7 xmlns:p="http://www.springframework.org/schema/p" 8 xsi:schemaLocation= 9 "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 10 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd 11 http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd"> 12 13 <!-- 开启扫描注解 --> 14 <context:component-scan base-package="org.guangsoft.controller"></context:component-scan> 15 <!-- 开启映射注解和适配注解 --> 16 <mvc:annotation-driven></mvc:annotation-driven> 17 </beans>
7配置web.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> 3 <context-param> 4 <param-name>contextConfigLocation</param-name> 5 <param-value>classpath:application_*.xml</param-value> 6 </context-param> 7 <listener> 8 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 9 </listener> 10 <servlet> 11 <servlet-name>springmvc</servlet-name> 12 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 13 <init-param> 14 <param-name>contextConfigLocation</param-name> 15 <param-value>classpath:springmvc_servlet.xml</param-value> 16 </init-param> 17 <load-on-startup>1</load-on-startup> 18 </servlet> 19 <servlet-mapping> 20 <servlet-name>springmvc</servlet-name> 21 <url-pattern>*.action</url-pattern> 22 </servlet-mapping> 23 </web-app>
8建立视图页面
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 <% 3 String path = request.getContextPath(); 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 5 %> 6 7 <!DOCTYPE HTML> 8 <html> 9 <head> 10 <base href="<%=basePath%>"> 11 <title>My JSP ‘index.jsp‘ starting page</title> 12 <meta http-equiv="pragma" content="no-cache"> 13 <meta http-equiv="cache-control" content="no-cache"> 14 </head> 15 16 <body> 17 <div align="center"> 18 <form action="addPrivilege.action" method="post"> 19 <div>pname:<input name="pname" /></div> 20 <div><input type="submit" value="提交" /></div> 21 </form> 22 </div> 23 </body> 24 </html>
9发布测试
时间: 2024-10-05 22:53:13