• springmvc+ibatis整合示例(转)


    转自:http://www.cnblogs.com/archie2010/archive/2011/05/06/2038792.html

    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
    */
    publicclass BaseDao extends SqlMapClientDaoSupport {

    @Resource(name
    ="sqlMapClient")
    private SqlMapClient sqlMapClient;

    @PostConstruct
    publicvoid 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
    */
    @Component
    publicclass UserDao extends BaseDao {
    /**
    * 添加
    *
    *
    @param user
    *
    @return
    */
    publicboolean addUser(User user) {
    User u
    = (User) getSqlMapClientTemplate().insert("insertUser", user);
    return u !=null?true : false;
    }
    /**
    * 删除
    *
    *
    @param uid
    *
    @return
    */
    publicboolean 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
    */
    publicboolean 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
    */
    publicint 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/*")
    publicclass UserController {

    @Resource
    private UserService userService;

    privatefinal 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);
    returnnew ModelAndView("redirect:/user/list/1");
    }
    else{
    returnnew 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(){
    returnnew ModelAndView("user/add");
    }
    /**
    * 保存
    *
    @param user
    *
    @return
    */
    @RequestMapping(value
    ="/new",method=RequestMethod.POST)
    public ModelAndView add(@Valid User user,BindingResult result){
    if(result.hasErrors()){
    returnnew ModelAndView("user/add","error", result.getAllErrors());
    }
    else{
    userService.addUser(user);
    returnnew ModelAndView(LIST);
    }
    }
    /**
    * 根据ID删除
    *
    @param id
    *
    @return
    */
    @RequestMapping(value
    ="/del/{id}")
    public ModelAndView delete(@PathVariable int id){
    userService.deleteUser(id);
    returnnew ModelAndView(LIST);
    }
    /**
    * 跳转至编辑页面
    *
    @param id
    *
    @return
    */
    @RequestMapping(value
    ="/edit/{id}")
    public ModelAndView edit(@PathVariable int id){
    User user
    =userService.getUserById(id);
    returnnew 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);
    returnnew ModelAndView(LIST);
    }
    }
    /**
    * 分页
    *
    @param pageNo
    *
    @return
    */
    @RequestMapping(value
    ="/list/{pageNo}")
    public ModelAndView list(@PathVariable int pageNo){
    Pages
    <User> pages=userService.getUserByPageNo(pageNo);
    returnnew ModelAndView("user/main","pages",pages);
    }
    }
    复制代码

     

     
     
  • 相关阅读:
    TStringList 常用操作(转自南山古陶)
    在Delphi中使用Indy控件实现邮件群发
    GSM手机SMS编码解码
    建别人进不了删不掉的文件夹
    播放 wav 文件
    delphi inherited,纯虚
    PDU编码规则
    sql函数
    基于GPRS的LED电子显示屏
    结对编程 队友代码分析
  • 原文地址:https://www.cnblogs.com/summer520/p/3432848.html
Copyright © 2020-2023  润新知