SpringMVC +Spring+ Mybatis 的完整小demo 拿走不谢

看过之前的蜕变系列文章,相信你对SpringMVC 、Spring、 Mybatis的整合有了一定的心得,学会了搭建属于自己的开发框架。今天我们就在这个基础上写一个demo程序,演示下怎么在框架下进行开发。

使用框架编写代码,有利于让代码保持相对稳定的方式进行开发,模式也比较固定,一套框架产出的代码也十分便于后期的维护。

我们搭建的框架中,对代码进行了分层处理。Controller负责和页面进行交互,关注web层后端的逻辑,Service关心功能层面的业务逻辑,为web层的功能点,提供业务层面的功能实现。Dao层,供service调用,为具体的业务服务提供数据支撑。

接下来我们通过一个小demo来感受下怎么使用SpringMVC、Spring、Mybatis框架进行开发。

第一步 编写你的页面

<%@page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"isELIgnored="false"%>
<html>
<head>
<title>ssm框架测试页面</title>
</head>
<body>
   <form action="/addTravelRoute"method=post>
    <lable>线路名称:</lable>
      <input type="text"name="travelRouteName" id="travelRouteName" /><br/>
    <lable>价格:</lable>
     <input type="text"name="travelRoutePrice" id="travelRoutePrice" /><br/>
     <lable>线路介绍:</lable>
       <input type="text"name="travelRouteIntroduce" id="travelRouteIntroduce"/><br />
      
         <lable>线路日期:</lable>
       <input type="text"name="travelRouteDate" id="travelRouteDate" /><br/>
      
    
      <input type="submit"value="提交"id="submit" /><br />
   </form>
</body>
</html>

第二步 编写你的web层

package com.pz.web.study.ssm.controller;
 
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
 
import com.pz.web.study.ssm.domain.TravelRoute;
import com.pz.web.study.ssm.service.TravelRouteService;
 
@Controller
publicclass TravelRouteController {
      
       private TravelRouteService travelRouteService;
      
      
       @RequestMapping("/addTravelRouteFrom")
       public String addTraveFrom() throws Exception {
           return"addTravelRoute";
        }
      
      
       @RequestMapping("/addTravelRoute")
       public String addTravelRoute(TravelRoutetravelRoute) throws Exception {
              travelRoute.setTravelRouteCid(1);
              travelRoute.setIsThemeTour("1");
              travelRoute.setTravelRouteFlag(1);
              travelRoute.setTravelSellerId(1L);
              travelRoute.setTravelRouteImage("img/product/small/m3db4d2277b5df3d98597f79082ef92d6d.jpg");
               travelRouteService.addTravelRoute(travelRoute);
             
           return"success";
        }
 
       publicvoidsetTravelRouteService(TravelRouteServicetravelRouteService) {
              this.travelRouteService = travelRouteService;
       }
      
      
      
      
 
}

第三步 编写你的服务层、

package com.pz.web.study.ssm.service;
 
import com.pz.web.study.ssm.domain.TravelRoute;
 
public interface TravelRouteService {
      
       public voidaddTravelRoute(TravelRoute travelRoute);
 
}
 
package com.pz.web.study.ssm.service.impl;
 
import com.pz.web.study.ssm.dao.TravelRouteDao;
import com.pz.web.study.ssm.domain.TravelRoute;
import com.pz.web.study.ssm.service.TravelRouteService;
 
public class TravelRouteServiceImpl implements TravelRouteService {
      
       private TravelRouteDao travelRouteDao;
 
       @Override
       publicvoidaddTravelRoute(TravelRoute travelRoute) {
              travelRouteDao.add(travelRoute);
 
       }
 
       publicvoidsetTravelRouteDao(TravelRouteDao travelRouteDao) {
              this.travelRouteDao =travelRouteDao;
       }
      
      
      
 
}

第四步 编写你的数据层

package com.pz.web.study.ssm.dao;
 
import java.util.List;
 
import com.pz.web.study.ssm.domain.TravelRoute;
 
 
 
/**
 *
 * @author pangzi
 *
 */
public interface TravelRouteDao {
 
    /**
     * 添加线路
     * @param travelRoute
     */
    void add(TravelRoute travelRoute);
   
    /**
     * 按id删除记录
     * @param travelRouteId
     */
    void deleteById(Long travelRouteId);
   
    /**
     * 更新
     * @param travelRoute
     */
    void updateById(TravelRoute travelRoute);
   
    /**
     * 分页查询TravelRoute列表
     * @param startRow
     * @param endRow
     * @return
     */
    List<TravelRoute>queryTravelByPage(Long startRow,Long endRow);
   
   
    /**
     * 根据Id查询
     * @param travelRouteId
     * @return
     */
    TravelRoute queryTravelById(LongtravelRouteId);
   
    /**
     * 分页查询TravelRoute列表
     * @param travelRouteName
     * @return
     */
    List<TravelRoute> queryTravelByName(StringtravelRouteName);
   
    /**
     * 模糊查询TravelRoute列表
     * @param travelRoute
     * @return
     */
    List<TravelRoute>queryTravelByQuery(TravelRoute travelRoute);
   
    /**
     * 模糊查询TravelRoute列表
     * @param travelRoute
     * @return
     */
    List<TravelRoute>queryTravelByChooseQuery(TravelRoute travelRoute);
   
    /**
     * 根据travelRouteIdList返回列表
     * @param travelRouteIdList
     * @return
     */
    List<TravelRoute>queryTravelByForEach(List<Long> travelRouteIdList);
   
}

第五步 编写你的Mapper

TravelRouteMapper.xml

<?xml version="1.0"encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTDMapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.pz.web.study.ssm.dao.TravelRouteDao">
 
    <resultMap id="TravelRouteType"type="TravelRoute" >
   
      <result column = "travel_route_id"property="travelRouteId"/>
      <result column = "travel_route_name"property="travelRouteName"/>
      <result column = "travel_route_price"property="travelRoutePrice"/>
      <result column = "travel_route_introduce"property="travelRouteIntroduce"/>
      <result column = "travel_route_flag"property="travelRouteFlag"/>
      <result column = "travel_route_date"property="travelRouteDate"/>
      <result column = "isThemeTour"property="isThemeTour"/>
      <result column = "travel_route_count"property="travelRouteCount"/>
      <result column = "travel_route_cid"property="travelRouteCid"/>
      <result column = "travel_route_image"property="travelRouteImage"/>
      <result column ="travel_route_seller_id"property="travelRouteSellerId"/>
     
   
    </resultMap>
 
    <insert id="add"parameterType="com.pz.web.study.ssm.domain.TravelRoute">
   
   
       INSERT
        INTO travel_route
         (travel_route_name,travel_route_price,travel_route_introduce,travel_route_flag,travel_route_date,isThemeTour,travel_route_count,travel_route_cid,travel_route_image,travel_route_seller_id)
  values(#{travelRouteName},#{travelRoutePrice},#{travelRouteIntroduce},#{travelRouteFlag},#{travelRouteDate},#{isThemeTour},#{travelRouteCount},#{travelRouteCid},#{travelRouteImage},#{travelRouteSellerId})
    <selectKey resultType="Long"keyProperty="travelRouteId" order="AFTER">
      SELECT @@identity
  </selectKey>
   
    </insert>
   
   
     <delete id="deleteById"parameterType="Long">
      delete from   travel_route where travel_route_id=#{travelRouteId}
    </delete>
   
    <update id="updateById">
      update   
      travel_route
       set
       <if test="travelRouteName!= null and travelRouteName != ''"> 
       travel_route_name=#{travelRouteName},
       </if>
        <if test="travelRoutePrice!= null and travelRoutePrice >0 "> 
       travel_route_price=#{travelRoutePrice},
       </if>
        <if test="travelRouteIntroduce!= null and travelRouteIntroduce != ''"> 
      travel_route_introduce=#{travelRouteIntroduce},
       </if>
        <if test="travelRouteFlag!= null "> 
       travel_route_flag=#{travelRouteFlag},
       </if>
       <if test="travelRouteFlag!= null "> 
       travel_route_date=#{travelRouteDate},
       </if>
        <if test="travelRouteFlag!= null "> 
       isThemeTour=#{isThemeTour},
       </if>
        <if test="travelRouteCount!= null and travelRouteCount > 0 "> 
       travel_route_count=#{travelRouteCount},
       </if>
        <if test="travelRouteCid!= null and travelRouteCid > 0 "> 
       travel_route_cid=#{travelRouteCid},
       </if>
        <if test="travelRouteImage!= null and travelRouteImage != ''"> 
       travel_route_image=#{travelRouteImage},
       </if>
        <if test="travelRouteSellerId!= null and travelRouteSellerId >0 "> 
      travel_route_seller_id=#{travelRouteSellerId}
       </if>
      where travel_route_id =#{travelRouteId}
   
   
    </update>
   
    <select id="queryTravelByPage"resultMap="TravelRouteType" parameterType="java.util.Map">
   
     select
       travel_route_id ,
       travel_route_name ,
       travel_route_price ,
       travel_route_introduce ,
       travel_route_flag ,
       travel_route_date ,
       isThemeTour ,
       travel_route_count ,
       travel_route_cid ,
       travel_route_image ,
       travel_route_seller_id
    
      from   travel_route order by travel_route_id desc limit #{startRow},#{endRow}
     
    </select>
   
     <select id="queryTravelById"resultMap="TravelRouteType" parameterType="Long">
   
     select
       travel_route_id ,
       travel_route_name ,
       travel_route_price ,
       travel_route_introduce ,
       travel_route_flag ,
       travel_route_date ,
       isThemeTour ,
       travel_route_count,
       travel_route_cid ,
       travel_route_image ,
       travel_route_seller_id 
    
      from   travel_route where travel_route_id =#{travelRouteId}
   
    </select>
   
    <select id="queryTravelByName"resultType="TravelRoute" parameterType="String">
   
     select
       travel_route_id as travelRouteId,
       travel_route_name as travelRouteName,
       travel_route_price as travelRoutePrice,
       travel_route_introduce astravelRouteIntroduce,
       travel_route_flag as travelRouteFlag,
       travel_route_date as travelRouteDate,
       isThemeTour as isThemeTour,
       travel_route_count as travelRouteCount,
       travel_route_cid as travelRouteCid,
       travel_route_image as travelRouteImage,
       travel_route_seller_id astravelRouteSellerId
    
      from   travel_route where travel_route_name like  '%' #{travelRouteName} '%'
   
    </select>
   
     <select id="queryTravelByQuery"resultMap="TravelRouteType" parameterType="TravelRoute">
   
     select
       travel_route_id ,
       travel_route_name ,
       travel_route_price ,
       travel_route_introduce ,
       travel_route_flag ,
       travel_route_date ,
       isThemeTour ,
       travel_route_count,
       travel_route_cid ,
       travel_route_image ,
       travel_route_seller_id 
    
      from travel_route
       <where>
          <if test="travelRouteName!= null and travelRouteName != ''"> 
          and travel_route_name like  '%' #{travelRouteName} '%'
         </if>
         <if test="travelRoutePrice!= null and travelRoutePrice >0 "> 
          and <![CDATA[travel_route_price >= #{travelRoutePrice}]]>
         </if>
        </where>
   
    </select>
   
   
     <select id="queryTravelByChooseQuery"resultMap="TravelRouteType" parameterType="TravelRoute">
   
     select
       travel_route_id ,
       travel_route_name ,
       travel_route_price ,
       travel_route_introduce ,
       travel_route_flag ,
       travel_route_date ,
       isThemeTour ,
       travel_route_count,
       travel_route_cid ,
       travel_route_image ,
       travel_route_seller_id 
    
      from travel_route
       <where>
         <choose>
          <when test="travelRouteName!= null and travelRouteName != ''"> 
          and travel_route_name like  '%' #{travelRouteName} '%'
         </when>
         <when test="travelRoutePrice!= null and travelRoutePrice >0 "> 
          andtravel_route_price>#{travelRoutePrice}
         </when>
         <otherwise>
              1 >2
          </otherwise>
        </choose>
        
        </where>
   
    </select>
   
    <select id="queryTravelByForEach"resultMap="TravelRouteType" >
   
     select
        <include refid="commonselect"/>
    
      from travel_route
       <where>
         <choose>
       <when test="list != nulland list.size>0">
        travel_route_id IN
        <foreach collection="list"open="(" close=")"item="id" separator=",">
            #{id}
        </foreach>
        </when>
          <otherwise>
              1 >2
          </otherwise>
        </choose>
       </where>
       
    </select>
   
    <sql id = "commonselect">
   
     travel_route_id ,
       travel_route_name ,
       travel_route_price ,
       travel_route_introduce ,
       travel_route_flag ,
       travel_route_date ,
       isThemeTour ,
       travel_route_count,
       travel_route_cid ,
       travel_route_image ,
       travel_route_seller_id 
   
    </sql>
   
 
 
</mapper>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这里是一个基于SpringMVCMyBatis、Layui的商品增删改查的示例代码,你可以参考一下: ### 1. 创建商品实体类 ```java public class Product { private Integer id; private String name; private Double price; // getter和setter方法省略 } ``` ### 2. 创建商品DAO接口 ```java public interface ProductDao { List<Product> findAll(); Product findById(Integer id); void save(Product product); void update(Product product); void deleteById(Integer id); } ``` ### 3. 创建商品DAO实现类 ```java @Repository public class ProductDaoImpl implements ProductDao { @Autowired private SqlSession sqlSession; @Override public List<Product> findAll() { return sqlSession.selectList("findAll"); } @Override public Product findById(Integer id) { return sqlSession.selectOne("findById", id); } @Override public void save(Product product) { sqlSession.insert("save", product); } @Override public void update(Product product) { sqlSession.update("update", product); } @Override public void deleteById(Integer id) { sqlSession.delete("deleteById", id); } } ``` ### 4. 创建商品控制器 ```java @Controller @RequestMapping("/product") public class ProductController { @Autowired private ProductDao productDao; @GetMapping("/list") public String list(Model model) { List<Product> productList = productDao.findAll(); model.addAttribute("productList", productList); return "product/list"; } @GetMapping("/add") public String add() { return "product/add"; } @PostMapping("/save") public String save(Product product) { productDao.save(product); return "redirect:/product/list"; } @GetMapping("/edit/{id}") public String edit(@PathVariable("id") Integer id, Model model) { Product product = productDao.findById(id); model.addAttribute("product", product); return "product/edit"; } @PostMapping("/update") public String update(Product product) { productDao.update(product); return "redirect:/product/list"; } @GetMapping("/delete/{id}") public String delete(@PathVariable("id") Integer id) { productDao.deleteById(id); return "redirect:/product/list"; } } ``` ### 5. 创建商品列表页面 ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>商品列表</title> <link rel="stylesheet" href="/layui/css/layui.css"> </head> <body> <div class="layui-container"> <div class="layui-row"> <div class="layui-col-md12"> <table class="layui-table"> <thead> <tr> <th>ID</th> <th>名称</th> <th>价格</th> <th>操作</th> </tr> </thead> <tbody> <#list productList as product> <tr> <td>${product.id}</td> <td>${product.name}</td> <td>${product.price}</td> <td> <a href="/product/edit/${product.id}" class="layui-btn layui-btn-sm layui-btn-normal">编辑</a> <a href="/product/delete/${product.id}" class="layui-btn layui-btn-sm layui-btn-danger">删除</a> </td> </tr> </#list> </tbody> </table> <a href="/product/add" class="layui-btn layui-btn-sm layui-btn-normal">添加商品</a> </div> </div> </div> <script src="/layui/layui.js"></script> </body> </html> ``` ### 6. 创建添加商品页面 ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>添加商品</title> <link rel="stylesheet" href="/layui/css/layui.css"> </head> <body> <div class="layui-container"> <div class="layui-row"> <div class="layui-col-md12"> <form class="layui-form" action="/product/save" method="post"> <div class="layui-form-item"> <label class="layui-form-label">名称</label> <div class="layui-input-block"> <input type="text" name="name" lay-verify="required" autocomplete="off" placeholder="请输入名称" class="layui-input"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">价格</label> <div class="layui-input-block"> <input type="text" name="price" lay-verify="required" autocomplete="off" placeholder="请输入价格" class="layui-input"> </div> </div> <div class="layui-form-item"> <div class="layui-input-block"> <button class="layui-btn" lay-submit lay-filter="formDemo">提交</button> <a href="/product/list" class="layui-btn layui-btn-primary">返回</a> </div> </div> </form> </div> </div> </div> <script src="/layui/layui.js"></script> </body> </html> ``` ### 7. 创建编辑商品页面 ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>编辑商品</title> <link rel="stylesheet" href="/layui/css/layui.css"> </head> <body> <div class="layui-container"> <div class="layui-row"> <div class="layui-col-md12"> <form class="layui-form" action="/product/update" method="post"> <input type="hidden" name="id" value="${product.id}"> <div class="layui-form-item"> <label class="layui-form-label">名称</label> <div class="layui-input-block"> <input type="text" name="name" lay-verify="required" autocomplete="off" placeholder="请输入名称" class="layui-input" value="${product.name}"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">价格</label> <div class="layui-input-block"> <input type="text" name="price" lay-verify="required" autocomplete="off" placeholder="请输入价格" class="layui-input" value="${product.price}"> </div> </div> <div class="layui-form-item"> <div class="layui-input-block"> <button class="layui-btn" lay-submit lay-filter="formDemo">提交</button> <a href="/product/list" class="layui-btn layui-btn-primary">返回</a> </div> </div> </form> </div> </div> </div> <script src="/layui/layui.js"></script> </body> </html> ``` ### 8. 配置SpringMVCMyBatisSpringMVC中,需要配置视图解析器、静态资源访问、文件上传等。这里只提供一个简单的配置示例: ```xml <!-- 视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/" /> <property name="suffix" value=".jsp" /> </bean> <!-- 静态资源访问 --> <mvc:resources mapping="/layui/**" location="/layui/" /> <!-- 文件上传 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding" value="UTF-8" /> <property name="maxUploadSize" value="10485760" /> </bean> <!-- MyBatis --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${jdbc.driverClassName}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="typeAliasesPackage" value="com.example.model" /> <property name="mapperLocations" value="classpath*:com/example/dao/*.xml" /> </bean> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.example.dao" /> </bean> ``` ### 9. 启动应用程序 在浏览器中输入http://localhost:8080/product/list访问商品列表页面,即可进行商品的增删改查操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值