前言

说起整合自然离不开ssm,我本身并不太喜欢ORM,尤其是MyBatis,把SQL语句写在xml里,尤其是大SQL,可读性不高,出错也不容易排查。

开发环境

idea2016、SpringMVC4、Mybatis3

项目结构

SSM整合

1、pom.xml

 1  3   4.0.0 4   com.autohome 5   SpringMVC3 6   war 7   1.0-SNAPSHOT 8   SpringMVC3 9   http://maven.apache.org10   11     12       junit13       junit14       4.1015     16     17       org.springframework18       spring-core19       4.3.6.RELEASE20     21     22       org.springframework23       spring-beans24       4.3.6.RELEASE25     26     27       org.springframework28       spring-context29       4.3.6.RELEASE30     31     32       org.springframework33       spring-web34       4.3.6.RELEASE35     36     37       org.springframework38       spring-context-support39       4.3.6.RELEASE40     41     42       org.springframework43       spring-webmvc44       4.3.6.RELEASE45     46     47       org.springframework48       spring-jdbc49       4.3.6.RELEASE50     51     52       org.apache.velocity53       velocity54       1.6.255     56     57       org.apache.velocity58       velocity-tools59       2.060     61     62       org.mybatis63       mybatis64       3.4.265     66     67       org.mybatis68       mybatis-spring69       1.3.070     71     72       com.microsoft.sqlserver73       sqljdbc474       4.075     76     77       commons-dbcp78       commons-dbcp79       1.480     81   82   83     SpringMVC384   85 

2、web.xml

 1   "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 3  "http://java.sun.com/dtd/web-app_2_3.dtd" > 4  5  6   Archetype Created Web Application 7    8    9     contextConfigLocation10     classpath:applicationContext.xml11   12   13     org.springframework.web.context.ContextLoaderListener14   15   16   17     SpringMVC18     org.springframework.web.servlet.DispatcherServlet19     20       contextConfigLocation21       classpath:springmvc-servlet.xml22     23   24   25     SpringMVC26     /27   28 

3、applicationContext.xml无配置内容所以忽略

4、springmvc-servlet.xml

 1 <?xml version="1.0" encoding="UTF-8"?> 2 13 14     15     16         17         18     19 20     21     22         23         24         25         26     27 28     29     30         31 32     33 34     35     36         37         38     39 40     41     42 43     44     45     46     47 48     49     50         51         52     53 54 

5、springmvc-mybatis.xml

 1 <?xml version="1.0" encoding="UTF-8"?> 2          "http://mybatis.org/dtd/mybatis-3-config.dtd"> 4  5  6      7      8          9     10 11 12     13         14     15 16 

6、dao接口层、mapper(dao接口实现层)、Biz层、 model层忽略不计(id,name,address3个测试字段)。 mapper文件让我踩了坑,后恍然大悟,mapper.xml要放在resources包下。

public interface UserMapper {    List listAllUser();    List listPagedUser(@Param("pageIndex") int pageIndex,@Param("pageSize") int pageSize);    int count();    int updateUser(User user);    int deleteUser(int id);    int insertUser(User user);    User getUserById(int id); } 1 <?xml version="1.0" encoding="UTF-8"?> 2          "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 4  5  6      7         select * from t_userinfo 8      9 10     11         select top ${pageSize} * from t_userinfo where id not in (select top (${pageSize} * (${pageIndex} -1)) id from t_userinfo)12     13 14     15         select count(*) from t_userinfo16     17 18     19         insert into t_userinfo VALUES (#{name},#{address})20     21 22     23         UPDATE  t_userinfo set name=#{name},address=#{address} where id=#{id}24     25 26     27         DELETE FROM t_userinfo where id=#{id}28     29 30     31         select * from t_userinfo where id=#{id}32     33 34 
package com.autohome.service; import com.autohome.model.User;import com.autohome.mapper.UserMapper;import org.apache.ibatis.annotations.Param;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service; import java.util.List;import java.util.Map;  @Servicepublic class UserBizImpl implements IUserBiz {     @Autowired    private UserMapper userMapper;     public List listAllUser() {        return userMapper.listAllUser();    }     public List listPagedUser(@Param("pageIndex") int pageIndex,@Param("pageSize") int pageSize) {        return userMapper.listPagedUser(pageIndex,pageSize);    }     public int count() {        return userMapper.count();    }     public int updateUser(User user) {        return userMapper.updateUser(user);    }     public int deleteUser(int id) {        return userMapper.deleteUser(id);    }     public int insertUser(User user) {        return userMapper.insertUser(user);    }     public User getUserById(int id) {        return userMapper.getUserById(id);    }}7、Controller。 我新建了一个UserController,在这里调用了增删改查分页的操作
package com.autohome.controller; import com.autohome.service.IUserBiz;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView; import com.autohome.model.User;  @Controller@RequestMapping("/User")public class UserController {     @Autowired    private IUserBiz userBiz;     @RequestMapping("/index")    public ModelAndView index(){        //System.out.println("size:"+userBiz.listAllUser().size());         System.out.println("size:"+userBiz.count());        User user =new User();//        user.setName("张三");//        user.setAddress("shanxi");        int result = userBiz.insertUser(user);//        if(result>0)//        {//            System.out.println("insert success");//        }else{//            System.out.println("insert err");//        }         int result = userBiz.deleteUser(39);        if(result>0)        {            System.out.println("delete success");        }else{            System.out.println("delete err");        } //        User user =new User();//        user.setId(35);//        user.setName("张三11111");//        user.setAddress("china");        int result = userBiz.updateUser(user);//        if(result>0)//        {//            System.out.println("update success");//        }else{//            System.out.println("update err");//        }          //System.out.println("size:"+userBiz.listPagedUser(1,10).size());           ModelAndView mav=new ModelAndView("index");         return mav;    }}

总结

做这个demo前我看的ssm整合教程全部是基于myeclipse开发的,而且教程把dao接口和dao实现是全部放在src java目录下的,也就是mapper目录包括了mapper接口和mapper.xml。 我做第一个demo时在idea里也是这么做的,demo运行始终不成功,一直提示找不 到mapper.xml里的方法,后来编译的时候我发现target/classes里确实找不到mapper.xml。 不知道用myeclipse整合开发时是否遇到这个问题,后我把mapper.xml文件放到resources目录中,编译后target文件中就能找到mapper.xml。 方法运行也搞定了。写demo写了半个小时,debug这个问题花了2个小时,好在demo跑起来了,也算是有收获的。

博客地址:http://www.cnblogs.com/sword-successful/

servlet增删改查实例_SpringMVC4+MyBatis3+SQLServer 2014 整合(包括增删改查分页)相关推荐

  1. php mysql增删改查实例_php连接数据库实现用户数据的增删改查实例

    下面小编就为大家带来一篇使用PHP连接数据库_实现用户数据的增删改查的整体操作示例.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 main页面(主页面) 代号 姓名 性 ...

  2. server的自增主键返回函数 sql_mybatis+sqlserver中返回非自增主键

    首先把实体类贴出来(这里只贴出属性,其它的就是getter和setter方法): public class Around { private String xccd;  //对应主键 private ...

  3. servlet mysql insert_servlet+mybatis 实现mysql的增删改查实例

    古人云:温故而知新.趁周末,重新来学习了一遍servlet + mybatis 实现mysql的增删改查,算是对自己学习的一个总结和记录. 开门见山,首先我们来看一下项目目录结构: 不难发现这是一个m ...

  4. Andriod --- JetPack (七):Room + ViewModel + LiveData 增删改查实例

    1.Andriod - JetPack (一):初识 JetPack 2.Andriod - JetPack (二):LifeCycle 的诞生 3.Andriod - JetPack (三):Vie ...

  5. c# 操作oracle数据库,C#连接oracle数据库增删改查实例

    [实例简介] C#连接oracle数据库,增删改查实例,OracleParameter防Sql注入等,适用于新手学习 [实例截图] [核心代码] 5868e8be-414a-4138-8390-2fb ...

  6. python pymysql实例_Python使用pymysql模块操作mysql增删改查实例分析

    Python使用pymysql模块操作mysql增删改查实例分析 发布时间:2020-09-30 16:42:12 来源:脚本之家 阅读:92 本文实例讲述了Python使用pymysql模块操作My ...

  7. IntelliJ Idea SpringBoot 数据库增删改查实例

    . ____ _ __ _ _/\\ / ___'_ __ _ _(_)_ __ __ _ \\\\( ( )\___ | '_ | '_| | '_ \/ _` | \\\\ \\/ ___)| | ...

  8. Java程序-单链表增删改查(实现对水浒人物的增删改查操作)

    单链表增删改查(实现对水浒人物的增删改查操作) 前言 一.链表(Linked List)介绍 二.应用实例 1.问题描述 2.代码实现 总结 前言 参考:B站,尚硅谷数据结构与算法 课程 一.链表(L ...

  9. spring入门(11)-spring与hibernate整合完成增删改查的操作(封装HibernateTemplate模版类对象)

    今天是spring的最后一节课,这节课老师讲了spring与hibernate整合完成增删改查的操作,这是很重要的一节课,这也是第一次真正的实现spring结合Hibernate和数据库连接上,下面是 ...

最新文章

  1. MPB:北林张静等-丛枝菌根真菌(AMF)孢子、菌丝密度及侵染率定量测定方法
  2. shell for循环案例:自动批量添加iptables应用端口规则
  3. 应对 Job 场景,Serverless 如何帮助企业便捷上云
  4. 封神系统-运维大脑的日志检测
  5. POJ1177 Picture 线段树+离散化+扫描线
  6. Ubuntu下selenium+Chrome的安装使用
  7. oracle dba开头的表,KU$开头的表是什么表?
  8. 从架构设计理念到集群部署,全面认识KubeEdge
  9. mac 黑窗口连接mysql_mac系统下mysql环境变量设置及远程连接
  10. linux下grep查找关键字
  11. 进入阿里做测试员遥不可及?这里或许有你想要的答案
  12. [算法]用java实现堆操作
  13. ubuntu下取代ping的好工具tcpping
  14. JSON数组转LIST集合的两种方法
  15. rk3399 rt5640 录音调试记录
  16. python opencv 摄像头亮度_python 基于opencv操作摄像头
  17. 期权与期货有哪些不同?
  18. 一寸照纯红色底图片_红底证件照换成蓝色背景,边缘怎样处理,才能让照片更自然呢?...
  19. 解读正则化 LASSO回归 岭回归
  20. 独家 | PHM数据竞赛首个中国夺冠团队经验分享(常用模型赛题详解PPT视频)...

热门文章

  1. 读写分离,读写分离死锁解决方案,事务发布死锁解决方案,发布订阅死锁解决方案|事务(进程 ID *)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。请重新运行该事务...
  2. ORA-04091: table is mutating, trigger/function may not see it
  3. 服务器应用程序不可用您试图在此 Web 服务器上访问的 Web 应用程序当前不可用。请点击 Web 浏览器中的“刷...
  4. sql server 2008学习8 sql server存储和索引结构
  5. mybatis批量插入oracle报表达式,mybatis oracle两种方式批量插入数据
  6. B+Tree索引为什么可以支持千万级别数据量的查找——讲讲mysql索引的底层数据结构
  7. git 服务器+git linux客户端搭建测试2
  8. Swoole的TCP/IP HTTP WebSocket关系
  9. 华为p50预计售价鸿蒙是什么,华为P50pro预计售价多少 华为P50Pro参数配置
  10. 扬州大学广陵学院计算机网络试卷,扬州大学广陵学院控制工程考试样卷B.doc