全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

SpringMVC4 + MyBatis3 + SQL Server 2014整合教程(含增删改查分页)

前言

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

开发环境

idea2016、SpringMVC4、Mybatis3

项目结构

SSM整合

1、pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <groupId>com.autohome</groupId>
 <artifactId>SpringMVC3</artifactId>
 <packaging>war</packaging>
 <version>1.0-SNAPSHOT</version>
 <name>SpringMVC3</name>
 <url>http://maven.apache.org</url>
 <dependencies>
 <dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.10</version>
 </dependency>
 <dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-core</artifactId>
  <version>4.3.6.RELEASE</version>
 </dependency>
 <dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-beans</artifactId>
  <version>4.3.6.RELEASE</version>
 </dependency>
 <dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-context</artifactId>
  <version>4.3.6.RELEASE</version>
 </dependency>
 <dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-web</artifactId>
  <version>4.3.6.RELEASE</version>
 </dependency>
 <dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-context-support</artifactId>
  <version>4.3.6.RELEASE</version>
 </dependency>
 <dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-webmvc</artifactId>
  <version>4.3.6.RELEASE</version>
 </dependency>
 <dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-jdbc</artifactId>
  <version>4.3.6.RELEASE</version>
 </dependency>
 <dependency>
  <groupId>org.apache.velocity</groupId>
  <artifactId>velocity</artifactId>
  <version>1.6.2</version>
 </dependency>
 <dependency>
  <groupId>org.apache.velocity</groupId>
  <artifactId>velocity-tools</artifactId>
  <version>2.0</version>
 </dependency>
 <dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>3.4.2</version>
 </dependency>
 <dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis-spring</artifactId>
  <version>1.3.0</version>
 </dependency>
 <dependency>
  <groupId>com.microsoft.sqlserver</groupId>
  <artifactId>sqljdbc4</artifactId>
  <version>4.0</version>
 </dependency>
 <dependency>
  <groupId>commons-dbcp</groupId>
  <artifactId>commons-dbcp</artifactId>
  <version>1.4</version>
 </dependency>
 </dependencies>
 <build>
 <finalName>SpringMVC3</finalName>
 </build>
</project>

2、web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
 <display-name>Archetype Created Web Application</display-name>
 <!--告知javaEE容器,有那些内容需要添加到上下文里去-->
 <context-param>
 <param-name>contextConfigLocation</param-name>
 <param-value>classpath:applicationContext.xml</param-value>
 </context-param>
 <listener>
 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener>
 <!--spring 前端控制器-->
 <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:springmvc-servlet.xml</param-value>
 </init-param>
 </servlet>
 <servlet-mapping>
 <servlet-name>SpringMVC</servlet-name>
 <url-pattern>/</url-pattern>
 </servlet-mapping>
</web-app>

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

4、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.xsd
  http://www.springframework.org/schema/context
  http://www.springframework.org/schema/context/spring-context.xsd
  http://www.springframework.org/schema/mvc
  http://www.springframework.org/schema/mvc/spring-mvc.xsd
">

 <!--从配置文件加载数据库信息-->
 <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="locations" value="classpath:config/jdbc.properties"/>
  <property name="fileEncoding" value="UTF-8"/>
 </bean>

 <!--配置数据源,这里使用Spring默认-->
 <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  <property name="driverClassName" value="${sqlserver.driver}"/>
  <property name="url" value="${sqlserver.url}"/>
  <property name="username" value="${sqlserver.username}"/>
  <property name="password" value="${sqlserver.password}"/>
 </bean>

 <!--扫描Mapper-->
 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  <property name="basePackage" value="com.autohome.mapper"/>

 </bean>

 <!--配置sqlSessionFactory-->
 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  <property name="configLocation" value="classpath:springmvc-mybatis.xml"/>
  <property name="dataSource" ref="dataSource"/>
 </bean>

 <!--启用最新的注解器、映射器-->
 <mvc:annotation-driven/>

 <!--扫描Controller注解类-->
 <context:component-scan base-package="com.autohome.controller" />
 <!--扫描Service注解类-->
 <context:component-scan base-package="com.autohome.service"/>

 <!--配置视图解析器-->
 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="prefix" value="/WEB-INF/views/"/>
  <property name="suffix" value=".jsp"/>
 </bean>

</beans>

5、springmvc-mybatis.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>

 <!-- 实体类,简称 -设置别名 -->
 <typeAliases>
  <typeAlias alias="User" type="com.autohome.model.User" />
 </typeAliases>


 <mappers>
  <mapper resource="mapper/UserMapper.xml" />
 </mappers>

</configuration>

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

public interface UserMapper {

 List<User> listAllUser();

 List<User> 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);

 

} 
<?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="com.autohome.mapper.UserMapper">
 <select id="listAllUser" resultType="User">
  select * from t_userinfo
 </select>

 <select id="listPagedUser" resultType="User">
  select top ${pageSize} * from t_userinfo where id not in (select top (${pageSize} * (${pageIndex} -1)) id from t_userinfo)
 </select>

 <select id="count" resultType="int">
  select count(*) from t_userinfo
 </select>

 <insert id="insertUser" parameterType="User">
  insert into t_userinfo VALUES (#{name},#{address})
 </insert>

 <update id="updateUser" parameterType="User">
  UPDATE t_userinfo set name=#{name},address=#{address} where id=#{id}
 </update>

 <delete id="deleteUser" parameterType="int">
  DELETE FROM t_userinfo where id=#{id}
 </delete>

 <select id="getUserById" resultType="User" parameterType="int">
  select * from t_userinfo where id=#{id}
 </select>

</mapper>
public interface IUserBiz {

 List<User> listAllUser();

 List<User> 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);

}
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;

 

 

@Service

public class UserBizImpl implements IUserBiz {

 

 @Autowired

 private UserMapper userMapper;

 

 public List<User> listAllUser() {

  return userMapper.listAllUser();

 }

 

 public List<User> 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跑起来了,也算是有收获的。

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。


# springmvc4  # mybatis3  # spring  # mybatis  # sql  # ssm整合教程  # SQL Server实现分页方法介绍  # SQL Server 在分页获取数据的同时获取到总记录数  # 基于sqlserver的四种分页方式总结  # sqlserver分页查询处理方法小结  # SQL Server 2012使用Offset/Fetch Next实现分页数据查询  # SQL server分页的四种方法思路详解(最全面教程)  # 放在  # 尤其是  # 这个问题  # 也不  # 让我  # 在这里  # 好了  # 我看  # 是有  # 第一个  # 就能  # 不太  # 找不到  # 我把  # 不高  # 花了  # 半个  # 分页  # 写了  # 我做 


相关文章: 网站制作软件免费下载安装,有哪些免费下载的软件网站?  如何用西部建站助手快速创建专业网站?  昆明高端网站制作公司,昆明公租房申请网上登录入口?  建站之星如何快速解决建站难题?  佛山网站制作系统,佛山企业变更地址网上办理步骤?  高防服务器租用如何选择配置与防御等级?  建站之星在线版空间:自助建站+智能模板一键生成方案  如何快速搭建个人网站并优化SEO?  深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?  如何在Golang中使用replace替换模块_指定本地或远程路径  如何快速辨别茅台真假?关键步骤解析  成都网站制作公司哪家好,四川省职工服务网是做什么用?  大连网站制作公司哪家好一点,大连买房网站哪个好?  建站之星3.0如何解决常见操作问题?  网站制作公司排行榜,抖音怎样做个人官方网站  制作门户网站的参考文献在哪,小说网站怎么建立?  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  如何用花生壳三步快速搭建专属网站?  建设网站制作价格,怎样建立自己的公司网站?  深圳 网站制作,深圳招聘网站哪个比较好一点啊?  建站主机如何选?性能与价格怎样平衡?  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?  常州自助建站:操作简便模板丰富,企业个人快速搭建网站  山东云建站价格为何差异显著?  广德云建站网站建设方案与建站流程优化指南  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法  安徽网站建设与外贸建站服务专业定制方案  php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  哈尔滨网站建设策划,哈尔滨电工证查询网站?  深入理解Android中的xmlns:tools属性  韩国服务器如何优化跨境访问实现高效连接?  制作网站的模板软件,网站怎么建设?  代刷网站制作软件,别人代刷火车票靠谱吗?  独立制作一个网站多少钱,建立网站需要花多少钱?  如何构建满足综合性能需求的优质建站方案?  较简单的网站制作软件有哪些,手机版网页制作用什么软件?  教学网站制作软件,学习*后期制作的网站有哪些?  利用JavaScript实现拖拽改变元素大小  导航网站建站方案与优化指南:一站式高效搭建技巧解析  ,交易猫的商品怎么发布到网站上去?  Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递  详解jQuery停止动画——stop()方法的使用  如何快速搭建自助建站会员专属系统?  如何高效生成建站之星成品网站源码?  如何在阿里云虚拟主机上快速搭建个人网站?  定制建站模板如何实现SEO优化与智能系统配置?18字教程  高性能网站服务器部署指南:稳定运行与安全配置优化方案 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。