zoukankan      html  css  js  c++  java
  • SpringMVC, Spring和Mybatis整合案例一

    一  准备工作

    包括:spring(包括springmvc)、mybatis、mybatis-spring整合包、数据库驱动、第三方连接池。

    二  整合思路

    Dao层:

      1、SqlMapConfig.xml,空文件即可。需要文件头。

      2、applicationContext-dao.xml。

        a)数据库连接池

        b)SqlSessionFactory对象,需要spring和mybatis整合包下的。

        c)配置mapper文件扫描器。

    Service层:

      1、applicationContext-service.xml包扫描器,扫描@service注解的类。

      2、applicationContext-trans.xml配置事务。

    表现层:

      Springmvc.xml

        1、包扫描器,扫描@Controller注解的类。

        2、配置注解驱动。

        3、视图解析器

    Web.xml

      配置前端控制器

    2.1 Dao层配置

      1.在classpath下创建mybatis/sqlMapConfig.xml, 其中内容如下

    <?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>
    </configuration>

      2. 在classpath下创建spring/applicationContext-dao.xml

      其中需要配置:数据源(databases), sql回话工厂(sqlSessionFactory), mapper扫描器

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
        xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
        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-4.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">
        
        <!-- 获取配置文件 -->
        <context:property-placeholder location="classpath:db.properties"/>
        <!-- 1.配置数据库链接信息 -->
        <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
            <property name="driverClassName" value="${jdbc.driver}" />
            <property name="url" value="${jdbc.url}" />
            <property name="username" value="${jdbc.username}" />
            <property name="password" value="${jdbc.password}" />
            <property name="maxActive" value="10" />
            <property name="maxIdle" value="5" />
        </bean>
        
        <!-- 2.配置sqlsessionfactory -->
        <bean id="" class="org.mybatis.spring.SqlSessionFactoryBean">
            <!-- 注入数据源 -->
            <property name="dataSource" ref="dataSource"></property>
            <!-- 设置mybatis配置文件路径 -->
            <property name="configLocation" value="classpath:mybatis/sqlMapConfig.xml"></property>
        </bean>
        
        <!-- 3.配置mapper扫描器 -->
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <!-- 设置扫描包路径 -->
            <property name="basePackage" value="cn.rodge.ssm.mapper"></property>
        </bean>
        
    </beans>

      3. 在classpath下创建db.properties数据库链接信息的舒心文件

    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/springmvc?characterEncoding=utf-8
    jdbc.username=root
    jdbc.password=luoji1025

    2.2 Service层配置

      1.在classpath下创建spring/applicationContext-service.xml文件,其中内容如下

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
        xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
        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-4.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">
        
        <!-- 配置注解扫描 -->
        <context:component-scan base-package="cn.rodge.ssm.service"></context:component-scan>
    </beans>

      2.配置事务, 在classpath下配置spring/applicationContext-transaction.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
        xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
        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-4.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">
        
        <!-- 配置事务管理 -->
        <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <!-- 注入数据源 -->
            <property name="dataSource" ref="dataSource"></property>
        </bean>
        <!-- 通知 -->
        <tx:advice id="txAdvice" transaction-manager="transactionManager">
            <tx:attributes>
                <!-- 传播行为 -->
                <tx:method name="save*" propagation="REQUIRED" />
                <tx:method name="insert*" propagation="REQUIRED" />
                <tx:method name="delete*" propagation="REQUIRED" />
                <tx:method name="update*" propagation="REQUIRED" />
                <tx:method name="find*" propagation="SUPPORTS" read-only="true" />
                <tx:method name="get*" propagation="SUPPORTS" read-only="true" />
            </tx:attributes>
        </tx:advice>
        <!-- 切面 -->
        <aop:config>
            <aop:advisor advice-ref="txAdvice" pointcut="execution(* cn.rodge.ssm.service.*.*(..))"/>
        </aop:config>
    </beans>

    2.3 Web层配置

      在classpath下配置spring/springmvc.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:p="http://www.springframework.org/schema/p"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns:mvc="http://www.springframework.org/schema/mvc"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
            http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
            http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
            
        <!-- 配置注解扫描 -->
        <context:component-scan base-package="cn.rodge.ssm.controller"></context:component-scan>
        
        <!-- 配置试图解析器 -->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
               <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
            <!-- 设置前缀 -->
            <property name="prefix" value="/WEB-INF/jsp/"></property>
            <!-- 设置后缀 -->
            <property name="suffix" value=".jsp"></property>
        </bean>
        
        <!-- 配置mvc注解驱动 -->
        <mvc:annotation-driven conversion-service="conversionService"/>
        
        <!-- 配置日期转换器 -->
        <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
            <property name="converters">
                <set>
                    <bean class="cn.rodge.ssm.converter.DateConverter"></bean>
                </set>
            </property>
        </bean>
    </beans>

    2.4 web.xml中前端处理器的配置

      在WEB-INF目录下的web.xml中配置

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
      <display-name>springmvc_mybatis</display-name>
      <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
      </welcome-file-list>
     
      <!-- 加载spring容器 -->
      <context-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>classpath:spring/applicationContext-*.xml</param-value>
      </context-param>
      <!-- 配置spring监听器 -->
      <listener>
          <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
      </listener>
     
      <!-- 配置解决中文post提交乱码问题 -->
      <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>
      </filter>
      <filter-mapping>
          <filter-name>characterEncodingFilter</filter-name>
          <url-pattern>/*</url-pattern>
      </filter-mapping>
     
      <!-- 配置springmvc前端控制器 -->
      <servlet>
          <servlet-name>springmvc</servlet-name>
          <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
          <init-param>
              <param-name>contextConfigLocation</param-name>
              <param-value>classpath:spring/springmvc.xml</param-value>
          </init-param>
      </servlet>
      <servlet-mapping>
          <servlet-name>springmvc</servlet-name>
          <url-pattern>*.action</url-pattern>
      </servlet-mapping>
    </web-app>

    2.5 逆向工程创建dao层(逆向工程的创建详见我的博客中的"mybatis逆向工程")

       1.接口类

    package cn.rodge.ssm.mapper;

    import cn.rodge.ssm.pojo.Items;
    import cn.rodge.ssm.pojo.ItemsExample;
    import java.util.List;
    import org.apache.ibatis.annotations.Param;

    public interface ItemsMapper {
        int countByExample(ItemsExample example);

        int deleteByExample(ItemsExample example);

        int deleteByPrimaryKey(Integer id);

        int insert(Items record);

        int insertSelective(Items record);

        List<Items> selectByExampleWithBLOBs(ItemsExample example);

        List<Items> selectByExample(ItemsExample example);

        Items selectByPrimaryKey(Integer id);

        int updateByExampleSelective(@Param("record") Items record, @Param("example") ItemsExample example);

        int updateByExampleWithBLOBs(@Param("record") Items record, @Param("example") ItemsExample example);

        int updateByExample(@Param("record") Items record, @Param("example") ItemsExample example);

        int updateByPrimaryKeySelective(Items record);

        int updateByPrimaryKeyWithBLOBs(Items record);

        int updateByPrimaryKey(Items record);
    }

      2.配置文件

    <?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="cn.rodge.ssm.mapper.ItemsMapper" >
      <resultMap id="BaseResultMap" type="cn.rodge.ssm.pojo.Items" >
        <id column="id" property="id" jdbcType="INTEGER" />
        <result column="name" property="name" jdbcType="VARCHAR" />
        <result column="price" property="price" jdbcType="REAL" />
        <result column="pic" property="pic" jdbcType="VARCHAR" />
        <result column="createtime" property="createtime" jdbcType="TIMESTAMP" />
      </resultMap>
      <resultMap id="ResultMapWithBLOBs" type="cn.rodge.ssm.pojo.Items" extends="BaseResultMap" >
        <result column="detail" property="detail" jdbcType="LONGVARCHAR" />
      </resultMap>
      <sql id="Example_Where_Clause" >
        <where >
          <foreach collection="oredCriteria" item="criteria" separator="or" >
            <if test="criteria.valid" >
              <trim prefix="(" suffix=")" prefixOverrides="and" >
                <foreach collection="criteria.criteria" item="criterion" >
                  <choose >
                    <when test="criterion.noValue" >
                      and ${criterion.condition}
                    </when>
                    <when test="criterion.singleValue" >
                      and ${criterion.condition} #{criterion.value}
                    </when>
                    <when test="criterion.betweenValue" >
                      and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
                    </when>
                    <when test="criterion.listValue" >
                      and ${criterion.condition}
                      <foreach collection="criterion.value" item="listItem" open="(" close=")" separator="," >
                        #{listItem}
                      </foreach>
                    </when>
                  </choose>
                </foreach>
              </trim>
            </if>
          </foreach>
        </where>
      </sql>
      <sql id="Update_By_Example_Where_Clause" >
        <where >
          <foreach collection="example.oredCriteria" item="criteria" separator="or" >
            <if test="criteria.valid" >
              <trim prefix="(" suffix=")" prefixOverrides="and" >
                <foreach collection="criteria.criteria" item="criterion" >
                  <choose >
                    <when test="criterion.noValue" >
                      and ${criterion.condition}
                    </when>
                    <when test="criterion.singleValue" >
                      and ${criterion.condition} #{criterion.value}
                    </when>
                    <when test="criterion.betweenValue" >
                      and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
                    </when>
                    <when test="criterion.listValue" >
                      and ${criterion.condition}
                      <foreach collection="criterion.value" item="listItem" open="(" close=")" separator="," >
                        #{listItem}
                      </foreach>
                    </when>
                  </choose>
                </foreach>
              </trim>
            </if>
          </foreach>
        </where>
      </sql>
      <sql id="Base_Column_List" >
        id, name, price, pic, createtime
      </sql>
      <sql id="Blob_Column_List" >
        detail
      </sql>
      <select id="selectByExampleWithBLOBs" resultMap="ResultMapWithBLOBs" parameterType="cn.rodge.ssm.pojo.ItemsExample" >
        select
        <if test="distinct" >
          distinct
        </if>
        <include refid="Base_Column_List" />
        ,
        <include refid="Blob_Column_List" />
        from items
        <if test="_parameter != null" >
          <include refid="Example_Where_Clause" />
        </if>
        <if test="orderByClause != null" >
          order by ${orderByClause}
        </if>
      </select>
      <select id="selectByExample" resultMap="BaseResultMap" parameterType="cn.rodge.ssm.pojo.ItemsExample" >
        select
        <if test="distinct" >
          distinct
        </if>
        <include refid="Base_Column_List" />
        from items
        <if test="_parameter != null" >
          <include refid="Example_Where_Clause" />
        </if>
        <if test="orderByClause != null" >
          order by ${orderByClause}
        </if>
      </select>
      <select id="selectByPrimaryKey" resultMap="ResultMapWithBLOBs" parameterType="java.lang.Integer" >
        select
        <include refid="Base_Column_List" />
        ,
        <include refid="Blob_Column_List" />
        from items
        where id = #{id,jdbcType=INTEGER}
      </select>
      <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
        delete from items
        where id = #{id,jdbcType=INTEGER}
      </delete>
      <delete id="deleteByExample" parameterType="cn.rodge.ssm.pojo.ItemsExample" >
        delete from items
        <if test="_parameter != null" >
          <include refid="Example_Where_Clause" />
        </if>
      </delete>
      <insert id="insert" parameterType="cn.rodge.ssm.pojo.Items" >
        insert into items (id, name, price,
          pic, createtime, detail
          )
        values (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{price,jdbcType=REAL},
          #{pic,jdbcType=VARCHAR}, #{createtime,jdbcType=TIMESTAMP}, #{detail,jdbcType=LONGVARCHAR}
          )
      </insert>
      <insert id="insertSelective" parameterType="cn.rodge.ssm.pojo.Items" >
        insert into items
        <trim prefix="(" suffix=")" suffixOverrides="," >
          <if test="id != null" >
            id,
          </if>
          <if test="name != null" >
            name,
          </if>
          <if test="price != null" >
            price,
          </if>
          <if test="pic != null" >
            pic,
          </if>
          <if test="createtime != null" >
            createtime,
          </if>
          <if test="detail != null" >
            detail,
          </if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides="," >
          <if test="id != null" >
            #{id,jdbcType=INTEGER},
          </if>
          <if test="name != null" >
            #{name,jdbcType=VARCHAR},
          </if>
          <if test="price != null" >
            #{price,jdbcType=REAL},
          </if>
          <if test="pic != null" >
            #{pic,jdbcType=VARCHAR},
          </if>
          <if test="createtime != null" >
            #{createtime,jdbcType=TIMESTAMP},
          </if>
          <if test="detail != null" >
            #{detail,jdbcType=LONGVARCHAR},
          </if>
        </trim>
      </insert>
      <select id="countByExample" parameterType="cn.rodge.ssm.pojo.ItemsExample" resultType="java.lang.Integer" >
        select count(*) from items
        <if test="_parameter != null" >
          <include refid="Example_Where_Clause" />
        </if>
      </select>
      <update id="updateByExampleSelective" parameterType="map" >
        update items
        <set >
          <if test="record.id != null" >
            id = #{record.id,jdbcType=INTEGER},
          </if>
          <if test="record.name != null" >
            name = #{record.name,jdbcType=VARCHAR},
          </if>
          <if test="record.price != null" >
            price = #{record.price,jdbcType=REAL},
          </if>
          <if test="record.pic != null" >
            pic = #{record.pic,jdbcType=VARCHAR},
          </if>
          <if test="record.createtime != null" >
            createtime = #{record.createtime,jdbcType=TIMESTAMP},
          </if>
          <if test="record.detail != null" >
            detail = #{record.detail,jdbcType=LONGVARCHAR},
          </if>
        </set>
        <if test="_parameter != null" >
          <include refid="Update_By_Example_Where_Clause" />
        </if>
      </update>
      <update id="updateByExampleWithBLOBs" parameterType="map" >
        update items
        set id = #{record.id,jdbcType=INTEGER},
          name = #{record.name,jdbcType=VARCHAR},
          price = #{record.price,jdbcType=REAL},
          pic = #{record.pic,jdbcType=VARCHAR},
          createtime = #{record.createtime,jdbcType=TIMESTAMP},
          detail = #{record.detail,jdbcType=LONGVARCHAR}
        <if test="_parameter != null" >
          <include refid="Update_By_Example_Where_Clause" />
        </if>
      </update>
      <update id="updateByExample" parameterType="map" >
        update items
        set id = #{record.id,jdbcType=INTEGER},
          name = #{record.name,jdbcType=VARCHAR},
          price = #{record.price,jdbcType=REAL},
          pic = #{record.pic,jdbcType=VARCHAR},
          createtime = #{record.createtime,jdbcType=TIMESTAMP}
        <if test="_parameter != null" >
          <include refid="Update_By_Example_Where_Clause" />
        </if>
      </update>
      <update id="updateByPrimaryKeySelective" parameterType="cn.rodge.ssm.pojo.Items" >
        update items
        <set >
          <if test="name != null" >
            name = #{name,jdbcType=VARCHAR},
          </if>
          <if test="price != null" >
            price = #{price,jdbcType=REAL},
          </if>
          <if test="pic != null" >
            pic = #{pic,jdbcType=VARCHAR},
          </if>
          <if test="createtime != null" >
            createtime = #{createtime,jdbcType=TIMESTAMP},
          </if>
          <if test="detail != null" >
            detail = #{detail,jdbcType=LONGVARCHAR},
          </if>
        </set>
        where id = #{id,jdbcType=INTEGER}
      </update>
      <update id="updateByPrimaryKeyWithBLOBs" parameterType="cn.rodge.ssm.pojo.Items" >
        update items
        set name = #{name,jdbcType=VARCHAR},
          price = #{price,jdbcType=REAL},
          pic = #{pic,jdbcType=VARCHAR},
          createtime = #{createtime,jdbcType=TIMESTAMP},
          detail = #{detail,jdbcType=LONGVARCHAR}
        where id = #{id,jdbcType=INTEGER}
      </update>
      <update id="updateByPrimaryKey" parameterType="cn.rodge.ssm.pojo.Items" >
        update items
        set name = #{name,jdbcType=VARCHAR},
          price = #{price,jdbcType=REAL},
          pic = #{pic,jdbcType=VARCHAR},
          createtime = #{createtime,jdbcType=TIMESTAMP}
        where id = #{id,jdbcType=INTEGER}
      </update>
    </mapper>

    2.6 service层创建

      1.创建ItemService接口

    package cn.rodge.ssm.service;

    import java.util.List;

    import cn.rodge.ssm.pojo.Items;
    import cn.rodge.ssm.pojo.QueryVo;

    /**
     * itemsservice层接口
     * @author Rodge
     *
     */
    public interface ItemService {
        //查询所有订单信息
        public List<Items> findAll();
        //根据id查询订单
        public Items findById(int id);
        //更改订单信息
        public void update(Items item);
        //根据条件查询
        public List<Items> findByQueryVo(QueryVo queryVo);
        
    }
      2.创建ItemService接口的实现类ItemServiceImpl

     package cn.rodge.ssm.service.impl;

    import java.util.List;

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;

    import cn.rodge.ssm.mapper.ItemsMapper;
    import cn.rodge.ssm.pojo.Items;
    import cn.rodge.ssm.pojo.ItemsExample;
    import cn.rodge.ssm.pojo.QueryVo;
    import cn.rodge.ssm.service.ItemService;
    /**
     * item业务层实现类
     * @author Rodge
     *
     */
    @Service
    public class ItemServiceImpl implements ItemService {
        @Autowired
        private ItemsMapper itemsMapper;
        
        //查询所有订单
        @Override
        public List<Items> findAll() {
            ItemsExample example = null;
            return itemsMapper.selectByExampleWithBLOBs(example);
        }
        
        //根据id查询订单
        @Override
        public Items findById(int id) {
            
            return itemsMapper.selectByPrimaryKey(id);
        }

        //更改订单信息
        @Override
        public void update(Items item) {
            itemsMapper.updateByPrimaryKeySelective(item);
        }
        //根据条件查询
        @Override
        public List<Items> findByQueryVo(QueryVo queryVo) {
            return null;
        }
    }

    2.7 Controller的创建

    package cn.rodge.ssm.controller;

    import java.util.List;

    import javax.servlet.http.HttpServletRequest;

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.servlet.ModelAndView;

    import cn.rodge.ssm.pojo.Items;
    import cn.rodge.ssm.pojo.QueryVo;
    import cn.rodge.ssm.service.ItemService;

    /**
     * itemsController
     * @author Rodge
     *
     */
    @Controller
    public class ItemController {
        @Autowired
        private ItemService itemService;
        
        @RequestMapping("/itemList.action")
        public String itemList (Model model) {
            //调用业务层查询订单数据
            List<Items> itemList = itemService.findAll();
            //将查询结果保存在model中
            model.addAttribute("itemList", itemList);
            //页面转发
            return "itemList";
        }
       
        @RequestMapping("/itemEdit.action")
        public ModelAndView itemEdit (HttpServletRequest request) {
            //获取请求id信息
            String idStr = request.getParameter("id");
            int id = Integer.parseInt(idStr);
            //跟局id调用业务层查询对应数据
            Items items = itemService.findById(id);
            //创建modelandview对象
            ModelAndView modelAndView = new ModelAndView();
            //存储查询结果
            modelAndView.addObject("item", items);
            //页面转发
            modelAndView.setViewName("editItem");
            return modelAndView;
        }
        
        @RequestMapping("/updateitem.action")
        public String updateItem (Items item) {
            //调用业务层修改数据
            itemService.update(item);
            return "itemList";
        }
    }

    2.8 日期转换器的创建

      首先, 需要实现Converter接口; 其次, 需要在springmvc.xml文件中配置日期转换器

    package cn.rodge.ssm.converter;

    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;

    import org.springframework.core.convert.converter.Converter;

    public class DateConverter implements Converter<String, Date> {

        @Override
        public Date convert(String date) {
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            try {
                return simpleDateFormat.parse(date);
            } catch (ParseException e) {
                e.printStackTrace();
            }
            return null;
        }

    }

    2.9 POJO类的创建

      1. Items.java类

    package cn.rodge.ssm.pojo;

    import java.util.Date;

    public class Items {
        private Integer id;

        private String name;

        private Float price;

        private String pic;

        private Date createtime;

        private String detail;

        public Integer getId() {
            return id;
        }

        public void setId(Integer id) {
            this.id = id;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name == null ? null : name.trim();
        }

        public Float getPrice() {
            return price;
        }

        public void setPrice(Float price) {
            this.price = price;
        }

        public String getPic() {
            return pic;
        }

        public void setPic(String pic) {
            this.pic = pic == null ? null : pic.trim();
        }

        public Date getCreatetime() {
            return createtime;
        }

        public void setCreatetime(Date createtime) {
            this.createtime = createtime;
        }

        public String getDetail() {
            return detail;
        }

        public void setDetail(String detail) {
            this.detail = detail == null ? null : detail.trim();
        }
    }

      2. ItemsExample.java类

    package cn.rodge.ssm.pojo;

    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;

    public class ItemsExample {
        protected String orderByClause;

        protected boolean distinct;

        protected List<Criteria> oredCriteria;

        public ItemsExample() {
            oredCriteria = new ArrayList<Criteria>();
        }

        public void setOrderByClause(String orderByClause) {
            this.orderByClause = orderByClause;
        }

        public String getOrderByClause() {
            return orderByClause;
        }

        public void setDistinct(boolean distinct) {
            this.distinct = distinct;
        }

        public boolean isDistinct() {
            return distinct;
        }

        public List<Criteria> getOredCriteria() {
            return oredCriteria;
        }

        public void or(Criteria criteria) {
            oredCriteria.add(criteria);
        }

        public Criteria or() {
            Criteria criteria = createCriteriaInternal();
            oredCriteria.add(criteria);
            return criteria;
        }

        public Criteria createCriteria() {
            Criteria criteria = createCriteriaInternal();
            if (oredCriteria.size() == 0) {
                oredCriteria.add(criteria);
            }
            return criteria;
        }

        protected Criteria createCriteriaInternal() {
            Criteria criteria = new Criteria();
            return criteria;
        }

        public void clear() {
            oredCriteria.clear();
            orderByClause = null;
            distinct = false;
        }

        protected abstract static class GeneratedCriteria {
            protected List<Criterion> criteria;

            protected GeneratedCriteria() {
                super();
                criteria = new ArrayList<Criterion>();
            }

            public boolean isValid() {
                return criteria.size() > 0;
            }

            public List<Criterion> getAllCriteria() {
                return criteria;
            }

            public List<Criterion> getCriteria() {
                return criteria;
            }

            protected void addCriterion(String condition) {
                if (condition == null) {
                    throw new RuntimeException("Value for condition cannot be null");
                }
                criteria.add(new Criterion(condition));
            }

            protected void addCriterion(String condition, Object value, String property) {
                if (value == null) {
                    throw new RuntimeException("Value for " + property + " cannot be null");
                }
                criteria.add(new Criterion(condition, value));
            }

            protected void addCriterion(String condition, Object value1, Object value2, String property) {
                if (value1 == null || value2 == null) {
                    throw new RuntimeException("Between values for " + property + " cannot be null");
                }
                criteria.add(new Criterion(condition, value1, value2));
            }

            public Criteria andIdIsNull() {
                addCriterion("id is null");
                return (Criteria) this;
            }

            public Criteria andIdIsNotNull() {
                addCriterion("id is not null");
                return (Criteria) this;
            }

            public Criteria andIdEqualTo(Integer value) {
                addCriterion("id =", value, "id");
                return (Criteria) this;
            }

            public Criteria andIdNotEqualTo(Integer value) {
                addCriterion("id <>", value, "id");
                return (Criteria) this;
            }

            public Criteria andIdGreaterThan(Integer value) {
                addCriterion("id >", value, "id");
                return (Criteria) this;
            }

            public Criteria andIdGreaterThanOrEqualTo(Integer value) {
                addCriterion("id >=", value, "id");
                return (Criteria) this;
            }

            public Criteria andIdLessThan(Integer value) {
                addCriterion("id <", value, "id");
                return (Criteria) this;
            }

            public Criteria andIdLessThanOrEqualTo(Integer value) {
                addCriterion("id <=", value, "id");
                return (Criteria) this;
            }

            public Criteria andIdIn(List<Integer> values) {
                addCriterion("id in", values, "id");
                return (Criteria) this;
            }

            public Criteria andIdNotIn(List<Integer> values) {
                addCriterion("id not in", values, "id");
                return (Criteria) this;
            }

            public Criteria andIdBetween(Integer value1, Integer value2) {
                addCriterion("id between", value1, value2, "id");
                return (Criteria) this;
            }

            public Criteria andIdNotBetween(Integer value1, Integer value2) {
                addCriterion("id not between", value1, value2, "id");
                return (Criteria) this;
            }

            public Criteria andNameIsNull() {
                addCriterion("name is null");
                return (Criteria) this;
            }

            public Criteria andNameIsNotNull() {
                addCriterion("name is not null");
                return (Criteria) this;
            }

            public Criteria andNameEqualTo(String value) {
                addCriterion("name =", value, "name");
                return (Criteria) this;
            }

            public Criteria andNameNotEqualTo(String value) {
                addCriterion("name <>", value, "name");
                return (Criteria) this;
            }

            public Criteria andNameGreaterThan(String value) {
                addCriterion("name >", value, "name");
                return (Criteria) this;
            }

            public Criteria andNameGreaterThanOrEqualTo(String value) {
                addCriterion("name >=", value, "name");
                return (Criteria) this;
            }

            public Criteria andNameLessThan(String value) {
                addCriterion("name <", value, "name");
                return (Criteria) this;
            }

            public Criteria andNameLessThanOrEqualTo(String value) {
                addCriterion("name <=", value, "name");
                return (Criteria) this;
            }

            public Criteria andNameLike(String value) {
                addCriterion("name like", value, "name");
                return (Criteria) this;
            }

            public Criteria andNameNotLike(String value) {
                addCriterion("name not like", value, "name");
                return (Criteria) this;
            }

            public Criteria andNameIn(List<String> values) {
                addCriterion("name in", values, "name");
                return (Criteria) this;
            }

            public Criteria andNameNotIn(List<String> values) {
                addCriterion("name not in", values, "name");
                return (Criteria) this;
            }

            public Criteria andNameBetween(String value1, String value2) {
                addCriterion("name between", value1, value2, "name");
                return (Criteria) this;
            }

            public Criteria andNameNotBetween(String value1, String value2) {
                addCriterion("name not between", value1, value2, "name");
                return (Criteria) this;
            }

            public Criteria andPriceIsNull() {
                addCriterion("price is null");
                return (Criteria) this;
            }

            public Criteria andPriceIsNotNull() {
                addCriterion("price is not null");
                return (Criteria) this;
            }

            public Criteria andPriceEqualTo(Float value) {
                addCriterion("price =", value, "price");
                return (Criteria) this;
            }

            public Criteria andPriceNotEqualTo(Float value) {
                addCriterion("price <>", value, "price");
                return (Criteria) this;
            }

            public Criteria andPriceGreaterThan(Float value) {
                addCriterion("price >", value, "price");
                return (Criteria) this;
            }

            public Criteria andPriceGreaterThanOrEqualTo(Float value) {
                addCriterion("price >=", value, "price");
                return (Criteria) this;
            }

            public Criteria andPriceLessThan(Float value) {
                addCriterion("price <", value, "price");
                return (Criteria) this;
            }

            public Criteria andPriceLessThanOrEqualTo(Float value) {
                addCriterion("price <=", value, "price");
                return (Criteria) this;
            }

            public Criteria andPriceIn(List<Float> values) {
                addCriterion("price in", values, "price");
                return (Criteria) this;
            }

            public Criteria andPriceNotIn(List<Float> values) {
                addCriterion("price not in", values, "price");
                return (Criteria) this;
            }

            public Criteria andPriceBetween(Float value1, Float value2) {
                addCriterion("price between", value1, value2, "price");
                return (Criteria) this;
            }

            public Criteria andPriceNotBetween(Float value1, Float value2) {
                addCriterion("price not between", value1, value2, "price");
                return (Criteria) this;
            }

            public Criteria andPicIsNull() {
                addCriterion("pic is null");
                return (Criteria) this;
            }

            public Criteria andPicIsNotNull() {
                addCriterion("pic is not null");
                return (Criteria) this;
            }

            public Criteria andPicEqualTo(String value) {
                addCriterion("pic =", value, "pic");
                return (Criteria) this;
            }

            public Criteria andPicNotEqualTo(String value) {
                addCriterion("pic <>", value, "pic");
                return (Criteria) this;
            }

            public Criteria andPicGreaterThan(String value) {
                addCriterion("pic >", value, "pic");
                return (Criteria) this;
            }

            public Criteria andPicGreaterThanOrEqualTo(String value) {
                addCriterion("pic >=", value, "pic");
                return (Criteria) this;
            }

            public Criteria andPicLessThan(String value) {
                addCriterion("pic <", value, "pic");
                return (Criteria) this;
            }

            public Criteria andPicLessThanOrEqualTo(String value) {
                addCriterion("pic <=", value, "pic");
                return (Criteria) this;
            }

            public Criteria andPicLike(String value) {
                addCriterion("pic like", value, "pic");
                return (Criteria) this;
            }

            public Criteria andPicNotLike(String value) {
                addCriterion("pic not like", value, "pic");
                return (Criteria) this;
            }

            public Criteria andPicIn(List<String> values) {
                addCriterion("pic in", values, "pic");
                return (Criteria) this;
            }

            public Criteria andPicNotIn(List<String> values) {
                addCriterion("pic not in", values, "pic");
                return (Criteria) this;
            }

            public Criteria andPicBetween(String value1, String value2) {
                addCriterion("pic between", value1, value2, "pic");
                return (Criteria) this;
            }

            public Criteria andPicNotBetween(String value1, String value2) {
                addCriterion("pic not between", value1, value2, "pic");
                return (Criteria) this;
            }

            public Criteria andCreatetimeIsNull() {
                addCriterion("createtime is null");
                return (Criteria) this;
            }

            public Criteria andCreatetimeIsNotNull() {
                addCriterion("createtime is not null");
                return (Criteria) this;
            }

            public Criteria andCreatetimeEqualTo(Date value) {
                addCriterion("createtime =", value, "createtime");
                return (Criteria) this;
            }

            public Criteria andCreatetimeNotEqualTo(Date value) {
                addCriterion("createtime <>", value, "createtime");
                return (Criteria) this;
            }

            public Criteria andCreatetimeGreaterThan(Date value) {
                addCriterion("createtime >", value, "createtime");
                return (Criteria) this;
            }

            public Criteria andCreatetimeGreaterThanOrEqualTo(Date value) {
                addCriterion("createtime >=", value, "createtime");
                return (Criteria) this;
            }

            public Criteria andCreatetimeLessThan(Date value) {
                addCriterion("createtime <", value, "createtime");
                return (Criteria) this;
            }

            public Criteria andCreatetimeLessThanOrEqualTo(Date value) {
                addCriterion("createtime <=", value, "createtime");
                return (Criteria) this;
            }

            public Criteria andCreatetimeIn(List<Date> values) {
                addCriterion("createtime in", values, "createtime");
                return (Criteria) this;
            }

            public Criteria andCreatetimeNotIn(List<Date> values) {
                addCriterion("createtime not in", values, "createtime");
                return (Criteria) this;
            }

            public Criteria andCreatetimeBetween(Date value1, Date value2) {
                addCriterion("createtime between", value1, value2, "createtime");
                return (Criteria) this;
            }

            public Criteria andCreatetimeNotBetween(Date value1, Date value2) {
                addCriterion("createtime not between", value1, value2, "createtime");
                return (Criteria) this;
            }
        }

        public static class Criteria extends GeneratedCriteria {

            protected Criteria() {
                super();
            }
        }

        public static class Criterion {
            private String condition;

            private Object value;

            private Object secondValue;

            private boolean noValue;

            private boolean singleValue;

            private boolean betweenValue;

            private boolean listValue;

            private String typeHandler;

            public String getCondition() {
                return condition;
            }

            public Object getValue() {
                return value;
            }

            public Object getSecondValue() {
                return secondValue;
            }

            public boolean isNoValue() {
                return noValue;
            }

            public boolean isSingleValue() {
                return singleValue;
            }

            public boolean isBetweenValue() {
                return betweenValue;
            }

            public boolean isListValue() {
                return listValue;
            }

            public String getTypeHandler() {
                return typeHandler;
            }

            protected Criterion(String condition) {
                super();
                this.condition = condition;
                this.typeHandler = null;
                this.noValue = true;
            }

            protected Criterion(String condition, Object value, String typeHandler) {
                super();
                this.condition = condition;
                this.value = value;
                this.typeHandler = typeHandler;
                if (value instanceof List<?>) {
                    this.listValue = true;
                } else {
                    this.singleValue = true;
                }
            }

            protected Criterion(String condition, Object value) {
                this(condition, value, null);
            }

            protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
                super();
                this.condition = condition;
                this.value = value;
                this.secondValue = secondValue;
                this.typeHandler = typeHandler;
                this.betweenValue = true;
            }

            protected Criterion(String condition, Object value, Object secondValue) {
                this(condition, value, secondValue, null);
            }
        }
    }

      3. QueryVo.java类

    package cn.rodge.ssm.pojo;

    public class QueryVo {
        private Items items;

        public Items getItems() {
            return items;
        }
        public void setItems(Items items) {
            this.items = items;
        }
    }

    2.10 访问路径

     localhost:8080/springmvc_mybatic/itemList.action

  • 相关阅读:
    利用 AlwaysInstallElevated 提权
    一批内网文章分享
    关于DLL劫持提权
    Xposed+JustTrustMe关闭ssl证书验证
    关于windows组策略首选项提权
    关于代替Procdump dump lsass的两种方法
    与ServletContext相关的监听器
    java EE 监听器
    ServletContext
    GenericServlet
  • 原文地址:https://www.cnblogs.com/rodge-run/p/6544930.html
Copyright © 2011-2022 走看看