Struts2+MyBatis3.1.0+Spring3.1.0整合之道二SqlSessionTemplate

来源:互联网 发布:淘宝仓管岗位职责 编辑:程序博客网 时间:2024/06/09 21:25

相关框架搭建在Struts2+MyBatis3.1.0+Spring3.1.0整合之道一 数据映射接口,已经讲解的非常详细,这里就不在讲述SSI框架的搭建。

 

(1)、采用接口org.apache.ibatis.session.SqlSession的实现类org.mybatis.spring.SqlSessionTemplate。
               在mybatis中, sessionFactory可由SqlSessionFactoryBuilder.来创建。

               而在MyBatis-Spring 中,使用了SqlSessionFactoryBean来替代。
                SqlSessionFactoryBean有一个必须属性dataSource(数据源),另外其还有一个通用属性configLocation(用来指定mybatis的xml配置文件路径)。

sping配置文件:

<?xml version="1.0" encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/tx  http://www.springframework.org/schema/tx/spring-tx-2.5.xsd http://www.springframework.org/schema/aop  http://www.springframework.org/schema/aop/spring-aop-2.5.xsd "> <!-- 采用注释的方式配置bean -->      <context:annotation-config />      <!-- 配置要扫描的包 -->      <context:component-scan base-package="com.vixuan.skydrive"></context:component-scan>            <!--proxy-target-class="true"强制使用cglib代理   如果为false则spring会自动选择-->     <aop:aspectj-autoproxy  proxy-target-class="true"/>     <!--数据源配置  -->   <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName"><value>com.mysql.jdbc.Driver</value>  </property>   <property name="url"> <value>jdbc:mysql://127.0.0.1:3306/skydrive</value> </property> <property name="username"> <value>root</value> </property> <property name="password"> <value>123456</value> </property> <property name="maxIdle"><value>40</value>  </property> <property name="maxWait"> <value>40</value> </property>    </bean>   <!--SqlSessionFactoryBean 配置  -->  <span style="color:#ff0000;"> <bean id="SqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">   <property name="configLocation">   <value>classpath:mybatis.xml</value>   </property>   <property name="dataSource">   <ref local="dataSource"></ref>   </property></span>   </bean>  <span style="color:#ff0000;"><!-- 配置SqlSessionTemplate --><bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">    <constructor-arg index="0" ref="SqlSessionFactory" /></bean></span>      <!--配置事务管理器  -->   <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">   <property name="dataSource">   <ref local="dataSource"></ref>   </property>   </bean>        <!-- 使用annotation注解方式配置事务 -->      <tx:annotation-driven transaction-manager="transactionManager"/>     <bean id="impl" class="com.vixuan.skydrive.daoimpl.UserDaoImpl" autowire="byName">       <span style="color:#ff0000;"><property name="sqlSessionTemplate" ref="sqlSessionTemplate"></property></span>     </bean>        <bean id="userService" class="com.vixuan.skydrive.serviceimpl.UserServiceImpl" autowire="byName" >       <property name="impl" ref="impl"></property>     </bean>            </beans>


 MyBatis配置文件:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <typeAliases>          <typeAlias alias="user" type="com.vixuan.skydrive.model.User"/>      </typeAliases>      <mappers>          <mapper resource="com/vixuan/skydrive/sqlmap/user.xml" />      </mappers> </configuration>


实体类映射文件user.xml

<?xml version="1.0" encoding="utf-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.pdsu.edu.domain.User"><resultMap type="com.vixuan.skydrive.model.User" id="userResult"><result property="user" column="user"/><result property="pass" column="pass" /><result property="xm" column="xm" /><result property="email" column="email"/><result property="phone" column="phone" /><result property="qq" column="qq" /></resultMap><select id="selectAllUser" resultMap="userResult">select * from t_user </select><select id="findUserById" parameterType="String" resultMap="userResult">select *from t_user where user=#{user} </select><insert id="insert" parameterType="user"> <![CDATA[insert intot_user(user,pass,xm,email,phone,qq) values(#{user},#{pass},#{xm},#{email},#{phone},#{qq})]]> </insert><update id="update" parameterType="user">update t_user setuser=#{user},pass=#{pass} where xm=#{xm} </update> <delete id="delete" parameterType="String">delete from t_user whereuser=#{user}</delete></mapper>


dao层接口和dao层实现(daoImpl)

UserDao

package com.vixuan.skydrive.dao;import java.util.List;import com.vixuan.skydrive.model.User;public interface UserDao {public abstract void insert(User dao);public abstract void update(User dao);    public abstract void delte(User dao);    public abstract User findById(String Id);    public List<User> findAll();}


UserDaoImpl

package com.vixuan.skydrive.daoimpl;import java.util.List;import org.mybatis.spring.SqlSessionTemplate;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Repository;import com.vixuan.skydrive.dao.UserDao;import com.vixuan.skydrive.model.User;@Repository public class UserDaoImpl implements UserDao {//sql 标识符private final String INSERT= "insert";      private final String UPDATE = "update";      private final String DELETE = "delete";      private final String FIND_USER_BYID = "findUserById";      private final String SELECT_ALL_USER = "selectAllUser";     //依赖注入    @Autowired     private SqlSessionTemplate sqlSessionTemplate;    //构造函数    public SqlSessionTemplate getSqlSessionTemplate() {return sqlSessionTemplate;}//public void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate) {this.sqlSessionTemplate = sqlSessionTemplate;}public void insert(User dao) {// TODO Auto-generated method stubsqlSessionTemplate.insert(INSERT, dao);}public void update(User dao) {// TODO Auto-generated method stubsqlSessionTemplate.update(UPDATE, dao);}public void delte(User dao) {// TODO Auto-generated method stubsqlSessionTemplate.delete(DELETE, dao);}public User findById(String Id) {// TODO Auto-generated method stubreturn sqlSessionTemplate.selectOne(FIND_USER_BYID, Id);}public List<User> findAll() {// TODO Auto-generated method stubreturn sqlSessionTemplate.selectList(SELECT_ALL_USER);}}


server接口和serverimpl实现

UserServer:

package com.vixuan.skydrive.service;import java.util.List;import com.vixuan.skydrive.model.User;public interface UserService {public abstract void insert(User dao);public abstract void update(User dao);    public abstract void delte(User dao);    public abstract User findById(String Id);    public List<User> findAll();}


UserServerImpl

package com.vixuan.skydrive.serviceimpl;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional;import com.vixuan.skydrive.daoimpl.UserDaoImpl;import com.vixuan.skydrive.model.User;import com.vixuan.skydrive.service.UserService;@Service  @Transactionalpublic class UserServiceImpl implements UserService {//dao@Autowired     private UserDaoImpl impl;public void insert(User dao) {// TODO Auto-generated method stubimpl.insert(dao);}public void update(User dao) {// TODO Auto-generated method stubimpl.update(dao);}public void delte(User dao) {// TODO Auto-generated method stubimpl.delte(dao);}public UserDaoImpl getImpl() {return impl;}//public void setImpl(UserDaoImpl impl) {this.impl = impl;}public User findById(String Id) {// TODO Auto-generated method stubUser user=impl.findById(Id);return user;}public List<User> findAll() {// TODO Auto-generated method stubList<User> list=impl.findAll();return list;}}


逻辑层action

UserAction

package com.vixuan.skydrive.action;import java.util.List;import org.springframework.context.annotation.Scope;import org.springframework.stereotype.Controller;import com.opensymphony.xwork2.ActionSupport;import com.vixuan.skydrive.model.User;import com.vixuan.skydrive.serviceimpl.UserServiceImpl;@Controller  @Scope("prototype")  public class UserAction extends ActionSupport {/** *  */private static final long serialVersionUID = 1L;    private User user;      private List<User> userList;    private static UserServiceImpl userService;    @Overridepublic String execute() throws Exception {// TODO Auto-generated method stubreturn null;}public static UserServiceImpl getUserService() {return userService;}public static void setUserService(UserServiceImpl userService) {UserAction.userService = userService;}public String add() {        userService.insert(user);          return SUCCESS;      }        public String delete() {          userService.delte(user);          return SUCCESS;      }        public String update() {          userService.update(user);          return SUCCESS;      }      //set 和  getpublic User getUser() {return user;}public void setUser(User user) {this.user = user;}public List<User> getUserList() {return userList;}public void setUserList(List<User> userList) {this.userList = userList;}    }


相关页面:(add.jsp、update.jsp和delete.jsp)

add.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  <%@ taglib prefix="s"  uri="/struts-tags"%>  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  <html>    <head>            <title>添加新用户</title>            <meta http-equiv="pragma" content="no-cache">      <meta http-equiv="cache-control" content="no-cache">      <meta http-equiv="expires" content="0">         </head>        <body>      <center>          <h1>添加新用户</h1>          <s:form action="user_add" namespace="/user" method="post">              <s:textfield label="用户名" name="user.user"></s:textfield>              <s:password label="密码" name="user.pass"></s:password>              <s:textfield label="姓名" name="user.xm"></s:textfield>            <s:textfield label="邮箱" name="user.email"></s:textfield>            <s:textfield label="电话" name="user.phone"></s:textfield>            <s:textfield label="qq" name="user.qq"></s:textfield>            <s:submit value="提交"></s:submit>          </s:form>      </center>    </body>  </html>  


delete.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  <%@ taglib prefix="s"  uri="/struts-tags"%>  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  <html>    <head>            <title>添加新用户</title>            <meta http-equiv="pragma" content="no-cache">      <meta http-equiv="cache-control" content="no-cache">      <meta http-equiv="expires" content="0">         </head>        <body>      <center>          <h1>添加新用户</h1>          <s:form action="user_delete" namespace="/user" method="post">            <s:textfield label="用户名" name="user.user"></s:textfield>                         <s:submit value="提交"></s:submit>          </s:form>      </center>    </body>  </html>  


update.jsp

 

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  <%@ taglib prefix="s"  uri="/struts-tags"%>  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  <html>    <head>            <title>修改用户</title>            <meta http-equiv="pragma" content="no-cache">      <meta http-equiv="cache-control" content="no-cache">      <meta http-equiv="expires" content="0">         </head>        <body>      <center>          <h1>修改用户</h1>          <s:form action="user_update" namespace="/user" method="post">              <s:hidden name="user.xm"></s:hidden>              <s:textfield label="用户名" name="user.user"></s:textfield>              <s:password label="密码" name="user.pass"></s:password>              <s:submit value="提交"></s:submit>          </s:form>      </center>    </body>  </html>  


Struts.xml配置文件

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><struts><package name="authority" extends="struts-default">  <!-- 定义一个拦截器 -->          <interceptors>              <interceptor name="authority"                  class="com.vixuan.skydrive.interceptot.LoginInterceptor">              </interceptor>              <!-- 拦截器栈 -->              <interceptor-stack name="mydefault">                  <interceptor-ref name="defaultStack" />                  <interceptor-ref name="authority" />              </interceptor-stack>          </interceptors>                  <!-- 定义全局Result -->          <global-results>              <!-- 当返回login视图名时,转入/login.jsp页面 -->              <result name="login">/login.jsp</result>          </global-results>                <action name="login" class="com.vixuan.skydrive.action.LoginAction">              <result name="success">/welcome.jsp</result>              <result name="error">/login.jsp</result>              <result name="input">/login.jsp</result>          </action>                  <action name="show" class="com.vixuan.skydrive.action.ShowAction">              <result name="success">/show.jsp</result>              <!-- 使用此拦截器 -->              <interceptor-ref name="mydefault" />          </action>          </package><constant name="struts.i18n.encoding" value="UTF-8"/>              <!-- 指定默认编码集 ,作用于HttpServletRequest的setCharacterEncoding()和freemarker,vilocity的输出 -->      <constant name="struts.configuration.xmlreload" value="true"/>              <!-- 当struts配置文件修改时是否自动加载 -->      <constant name="struts.devMode" value="false"/>              <!-- 开发模式下打印详细的错误信息 -->      <constant name="struts.ui.theme" value="xhtml"/>            <package name="users" namespace="/user" extends="struts-default">          <action name="user_*" class="com.vixuan.skydrive.action.UserAction" method="{1}">              <result name="success">/index.jsp</result>                     </action>      </package>          <package name="struts2.action" extends="struts-default">    <action name="loginUser" class="com.vixuan.skydrive.action.LoginActions">    </action></package>    </struts>    


项目结构图:

0 0
原创粉丝点击