springMVC ibatis 整合案例

来源:互联网 发布:淘宝头条一篇多少钱 编辑:程序博客网 时间:2024/06/09 19:58

SpringMVC与Ibatis框架整合所使用版本

Ibatis 2.3.4

Spring 3.0


web.xml

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5"     xmlns="http://java.sun.com/xml/ns/javaee"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">        <!-- 字符过滤_防止添加到数据库中的数据为乱码 -->    <filter>        <filter-name>characterEncodingFilter</filter-name>        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>        <init-param>            <param-name>encoding</param-name>            <param-value>UTF-8</param-value>        </init-param>        <init-param>            <param-name>forceEncoding</param-name>            <param-value>true</param-value>        </init-param>    </filter>    <filter-mapping>        <filter-name>characterEncodingFilter</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping>        <servlet>        <servlet-name>springmvc</servlet-name>        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>        <load-on-startup>1</load-on-startup>    </servlet>        <servlet-mapping>        <servlet-name>springmvc</servlet-name>        <url-pattern>/</url-pattern>    </servlet-mapping>        <listener>        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>    </listener>        <context-param>        <param-name>contextConfigLocation</param-name>        <param-value>classpath:applicationContext*.xml</param-value>    </context-param>       <welcome-file-list>        <welcome-file>index.jsp</welcome-file>   </welcome-file-list></web-app>


springmvc-servlet.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"     xmlns:mvc="http://www.springframework.org/schema/mvc"    xmlns:context="http://www.springframework.org/schema/context"    xsi:schemaLocation="        http://www.springframework.org/schema/beans         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd        http://www.springframework.org/schema/mvc        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd        http://www.springframework.org/schema/context         http://www.springframework.org/schema/context/spring-context-3.0.xsd">    <context:component-scan base-package="com.archie" />    <mvc:annotation-driven />    <!-- 视图解析器 -->    <bean id="viewResolver"        class="org.springframework.web.servlet.view.InternalResourceViewResolver">        <property name="viewClass"            value="org.springframework.web.servlet.view.JstlView"></property>        <property name="prefix" value="/WEB-INF/views/"></property>        <property name="suffix" value=".jsp"></property>    </bean>    <!-- 异常解析器 -->    <bean id="simpleMappingExceptionResolver"        class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">        <property name="exceptionMappings">            <props>                <prop                    key="org.springframework.web.multipart.MaxUploadSizeExceededException">common/fileerror</prop>            </props>        </property>    </bean></beans>



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"    xmlns:mvc="http://www.springframework.org/schema/mvc"    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-3.0.xsd        http://www.springframework.org/schema/mvc         http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd        http://www.springframework.org/schema/context         http://www.springframework.org/schema/context/spring-context-3.0.xsd        http://www.springframework.org/schema/tx        http://www.springframework.org/schema/tx/spring-tx-3.0.xsd      http://www.springframework.org/schema/aop      http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"  default-autowire="byName">        <!-- 自动扫描 -->    <context:component-scan base-package="com.archie"/>        <!-- 强制使用CGLIB代理  -->    <aop:aspectj-autoproxy proxy-target-class="true"/>        <!-- DataSource数据源 -->    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"        destroy-method="close">        <property name="driverClassName">            <value>com.mysql.jdbc.Driver</value>        </property>        <property name="url">            <value>jdbc:mysql://localhost:3306/springweb_ibatis</value>        </property>        <property name="username">            <value>root</value>        </property>        <property name="password">            <value>root</value>        </property>    </bean>          <!-- Spring iBatis SqlMapClient -->    <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">        <property name="configLocation" value="classpath:sqlmap-config.xml" />        <property name="dataSource" ref="dataSource" />    </bean>          <!--事务管理DataSourceTransactionManager-->    <bean id="txManager"        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">        <property name="dataSource" ref="dataSource" />    </bean>        <!--启动spring注解功能-->    <tx:annotation-driven transaction-manager="txManager" />        <aop:config>        <aop:pointcut id="baseServiceMethods" expression="execution(* com.archie.dao.*.*(..))" />        <aop:advisor advice-ref="txAdvice" pointcut-ref="baseServiceMethods" />    </aop:config>    <aop:aspectj-autoproxy />    <tx:advice id="txAdvice" transaction-manager="txManager">        <tx:attributes>            <tx:method name="select*" read-only="true" propagation="REQUIRED" />            <tx:method name="find*" read-only="true" propagation="REQUIRED" />            <tx:method name="save*" propagation="REQUIRED" isolation="REPEATABLE_READ" />            <tx:method name="update*" propagation="REQUIRED" isolation="REPEATABLE_READ" />            <tx:method name="add*" propagation="REQUIRED" isolation="REPEATABLE_READ" />            <tx:method name="delete*" propagation="REQUIRED" isolation="REPEATABLE_READ" />        </tx:attributes>    </tx:advice></beans>

sqlmap-config.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE sqlMapConfig     PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"     "http://www.ibatis.com/dtd/sql-map-config-2.dtd"><sqlMapConfig>    <sqlMap resource="sqlMap/User.xml" /></sqlMapConfig>

BaseDao.java

package com.archie.dao;import javax.annotation.PostConstruct;import javax.annotation.Resource;import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;import com.ibatis.sqlmap.client.SqlMapClient;/** * BaseDao,Dao需继承此Dao *  * @author archie2010 since 2011-3-3 下午10:52:36 */public class BaseDao extends SqlMapClientDaoSupport {    @Resource(name = "sqlMapClient")    private SqlMapClient sqlMapClient;    @PostConstruct    public void initSqlMapClient() {        super.setSqlMapClient(sqlMapClient);    }}

UserDao.java

package com.archie.dao;import java.util.ArrayList;import java.util.List;import org.springframework.stereotype.Component;import com.archie.model.User;import com.archie.util.Pages;/** * UserDao *  * @author archie2010 *  * since 下午10:31:52 */@Componentpublic class UserDao extends BaseDao {    /**     * 添加     *      * @param user     * @return     */    public boolean addUser(User user) {        User u = (User) getSqlMapClientTemplate().insert("insertUser", user);        return u != null ? true : false;    }    /**     * 删除     *      * @param uid     * @return     */    public boolean deleteUser(int uid) {        int res = getSqlMapClientTemplate().delete("deleteUserByID", uid);        return res > 0 ? true : false;    }    /**     * 查询     *      * @param uid     * @return     */    public User getUserByUid(int uid) {        return (User) getSqlMapClientTemplate().queryForObject("findUserByID",                uid);    }    /**     * 查询所有     *      * @return     */    @SuppressWarnings("unchecked")    public List<User> getAllUsers() {        return getSqlMapClientTemplate().queryForList("findAllUser");    }    /**     * 修改     *      * @param user     * @return     */    public boolean updateUser(User user) {        int res = getSqlMapClientTemplate().update("updateUserByUser", user);        return res > 0 ? true : false;    }    /**     * 查询(根据用户名密码)     *      * @param user     * @return     */    public User getUserByUnameUpwd(User user) {        return (User) getSqlMapClientTemplate().queryForObject(                "selectByUnameAndUpwd", user);    }    /**     * 记录总数     *      * @return     */    public int getAllUserCount() {        return (Integer) getSqlMapClientTemplate().queryForObject(                "findAllUserCount");    }    /**     * 分页     *      * @param pageNo     * @return     */    @SuppressWarnings("unchecked")    public Pages<User> getUserByPageNo(int pageNo) {        Pages<User> pages = new Pages<User>(getAllUserCount());        pages.setPageSize(5);        List<User> userList = new ArrayList<User>();        userList = getSqlMapClientTemplate().queryForList("findPageUser",                pages.getStart(pageNo));        pages.setPageList(userList);        return pages;    }}


SpringMVC的Controller 

UserController .java

package com.archie.web;import javax.annotation.Resource;import javax.servlet.http.HttpSession;import javax.validation.Valid;import org.springframework.stereotype.Controller;import org.springframework.validation.BindingResult;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.servlet.ModelAndView;import com.archie.model.User;import com.archie.service.UserService;import com.archie.util.Pages;/** * BaseDao,Dao需继承此Dao *  * @author archie2010 since 2011-3-3 下午10:52:36 */@Controller@RequestMapping("/user/*")public class UserController {        @Resource    private UserService userService;    private final String LIST="redirect:/user/list/1";        /**     * 登录     * @param user     * @param session     * @return     */    @RequestMapping("/login")    public ModelAndView login(@Valid User user,BindingResult result,HttpSession session){        if(!result.hasErrors()){        User loginUser=userService.login(user);        if(loginUser!=null){            session.setAttribute("USER", loginUser);            return new ModelAndView("redirect:/user/list/1");        }else{            return new ModelAndView("redirect:/");        }      }else{          ModelAndView view=new ModelAndView();          view.setViewName("redirect:/");          view.addObject("error", result.getAllErrors());          return view;      }    }    /**     * 跳转至添加页     * @return     */    @RequestMapping(value="/new",method=RequestMethod.GET)    public ModelAndView toAdd(){        return new ModelAndView("user/add");    }    /**     * 保存     * @param user     * @return     */    @RequestMapping(value="/new",method=RequestMethod.POST)    public ModelAndView add(@Valid User user,BindingResult result){        if(result.hasErrors()){            return new ModelAndView("user/add","error", result.getAllErrors());        }else{            userService.addUser(user);            return new ModelAndView(LIST);            }    }    /**     * 根据ID删除     * @param id     * @return     */    @RequestMapping(value="/del/{id}")    public ModelAndView delete(@PathVariable int id){        userService.deleteUser(id);        return new ModelAndView(LIST);    }    /**     * 跳转至编辑页面     * @param id     * @return     */    @RequestMapping(value="/edit/{id}")    public ModelAndView edit(@PathVariable int id){        User user=userService.getUserById(id);        return new ModelAndView("user/edit","user",user);    }    /**     * 编辑     * @param user     * @return     */    @RequestMapping(value="/edit")    public ModelAndView update(@Valid User user,BindingResult result){        ModelAndView view=new ModelAndView();        if(result.hasErrors()){            view.addObject("error", result.getAllErrors());            view.setViewName("user/edit");            return view;        }else{        userService.updateUser(user);        return new ModelAndView(LIST);        }    }    /**     * 分页     * @param pageNo     * @return     */    @RequestMapping(value="/list/{pageNo}")    public ModelAndView list(@PathVariable int pageNo){        Pages<User> pages=userService.getUserByPageNo(pageNo);        return new ModelAndView("user/main","pages",pages);    }}


原文:http://www.cnblogs.com/archie2010/archive/2011/05/06/2038792.html


原创粉丝点击