前言

说起整合自然离不开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分页的四种方法思路详解(最全面教程)
# 放在
# 尤其是
# 这个问题
# 也不
# 让我
# 在这里
# 好了
# 我看
# 是有
# 第一个
# 就能
# 不太
# 找不到
# 我把
# 不高
# 花了
# 半个
# 分页
# 写了
# 我做
相关文章:
,巨量百应是干嘛的?
如何选择建站程序?包含哪些必备功能与类型?
如何选择靠谱的建站公司加盟品牌?
外贸公司网站制作,外贸网站建设一般有哪些步骤?
制作网站公司那家好,网络公司是做什么的?
广平建站公司哪家专业可靠?如何选择?
建站之星ASP如何实现CMS高效搭建与安全管理?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
济南企业网站制作公司,济南社保单位网上缴费步骤?
如何快速选择适合个人网站的云服务器配置?
高端建站三要素:定制模板、企业官网与响应式设计优化
高端网站建设与定制开发一站式解决方案 中企动力
如何获取开源自助建站系统免费下载链接?
如何选择最佳自助建站系统?快速指南解析优劣
如何有效防御Web建站篡改攻击?
如何选择服务器才能高效搭建专属网站?
深圳企业网站制作设计,在深圳如何网上全流程注册公司?
网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?
教学论文网站制作软件有哪些,写论文用什么软件
?
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
如何用PHP快速搭建高效网站?分步指南
简历在线制作网站免费,免费下载个人简历的网站是哪些?
如何在IIS管理器中快速创建并配置网站?
如何选择适合PHP云建站的开源框架?
零基础网站服务器架设实战:轻量应用与域名解析配置指南
建站之星手机一键生成:多端自适应+小程序开发快速建站指南
如何使用Golang安装API文档生成工具_快速生成接口文档
外贸公司网站制作哪家好,maersk船公司官网?
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
实例解析angularjs的filter过滤器
如何快速重置建站主机并恢复默认配置?
建站主机服务器选型指南与性能优化方案解析
建站之星代理费用多少?最新价格详情介绍
海南网站制作公司有哪些,海口网是哪家的?
我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?
建站主机系统SEO优化与智能配置核心关键词操作指南
建站之星如何一键生成手机站?
香港服务器租用费用高吗?如何避免常见误区?
淘宝制作网站有哪些,淘宝网官网主页?
教育培训网站制作流程,请问edu教育网站的域名怎么申请?
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
建站之星安装路径如何正确选择及配置?
在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?
广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?
北京网站制作公司哪家好一点,北京租房网站有哪些?
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
建站之星后台密码遗忘?如何快速找回?
PHP 500报错的快速解决方法
如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?
制作电商网页,电商供应链怎么做?
*请认真填写需求信息,我们会在24小时内与您取得联系。