当前位置: 移动技术网 > IT编程>开发语言>Java > SpringMVC4 + MyBatis3 + SQL Server 2014整合教程(含增删改查分页)

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

2019年07月22日  | 移动技术网IT编程  | 我要评论

前言

说起整合自然离不开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跑起来了,也算是有收获的。

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网