SSM(Spring+SpringMVC+Mybatis)极简整合完整示例(结构清晰三大框架仅需一个xml配置文件!)

看网上的教程ssm三大框架整合都是一堆xml配置文件,我今天出一个教程,SSM三大框架只需要一个xml配置文件,

无需 :mybatis-config.xml, db.properties,spring-mvc.xml , log4j.properties。

示例环境基于:

spring5.2.9,下载地址:https://repo.spring.io/libs-release-local/org/springframework/spring/5.2.9.RELEASE/

Mybatis:3.5.6,下载地址:https://github.com/mybatis/mybatis-3/releases

以上包均为目前最新版本

1,User.java实体类 

package com.ssm.entity;
public class User {
private String loginid;
private String loginname;
private String sex;
private String mobile;
public String getLoginid() {
return loginid;
}
public void setLoginid(String loginid) {
this.loginid = loginid;
}
public String getLoginname() {
return loginname;
}
public void setLoginname(String loginname) {
this.loginname = loginname;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(getClass().getSimpleName());
sb.append(" [");
sb.append("loginid=").append(loginid);
sb.append(", loginname=").append(loginname);
sb.append(", sex=").append(sex);
sb.append(", mobile=").append(mobile);
sb.append("]");
return sb.toString();
}
}

2,UserDao.java 接口类

package com.ssm.dao;
import java.util.List;
import com.ssm.entity.User;
/*
接口类中定义接口即可,无需自己去写接口实现类,Mybatis会做这个工作
接口类中所有方法默认均为public作用域,所以可以不写public权限修饰符
*/
public interface UserDao {
int selectCount();
List<User> selectAllUser();
}

3,UserDao.xml 映射文件

<?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">
<!-- namespace:指定本xml对应的java类 -->
<mapper namespace="com.ssm.dao.UserDao">
<select id="selectCount" resultType="int">
select count(*) from t_users;
</select>
<select id="selectAllUser" resultType="com.ssm.entity.User">
select * from t_users;
</select>
</mapper>

4,UserController.java 控制类

package com.ssm.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import com.ssm.dao.UserDao;
import com.ssm.entity.User;
@Controller
public class UserController {
@Autowired
UserDao user;
@GetMapping("/index")
public String index() {
System.out.printf("到了这里代表你已经成功了!,共有记录:%d条",user.selectCount());
return "Hello World!";
}
@RequestMapping("/userlist")
public ModelAndView userlist() {
ModelAndView mv =new ModelAndView();
List<User> userlist =user.selectAllUser();
//类似于request.setAttribute("userlist",userlist);
mv.addObject("userlist",userlist);
mv.setViewName("index");
return mv;
}
}

5,Spring.xml (spring+springmvc+mybatis整合配置文件)

<?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"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<!-- xml约束:注意这里的写法,不管spring是什么版本,这里都这么些都行 -->
<!-- spring与Spring-MVC的相关设置开始 -->
<!-- 开启Spring-MVC注解模式,即可以在Java代码中使用@GetMapping等内容 -->
<mvc:annotation-driven >
<mvc:message-converters register-defaults="true">
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes" value="text/html;charset=UTF-8"/>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
<!--向容器自动注入配置-->
<!-- <context:annotation-config /> -->
<!--将静态资源交由默认的servlet处理-->
<!-- mvc:default-servlet-handler /> -->
<!-- 设置相关的controller位置,用于绑定自定义包名,spring会自动扫描该目录下所有的.java文件 -->
<context:component-scan base-package="com.ssm.controller" />
<!-- 配置视图解析器 默认为jspViewResolver-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
id="internalResourceViewResolver">
<!-- 前缀 -->
<property name="prefix" value="WEB-INF/pages/" />
<!-- 后缀 -->
<property name="suffix" value=".jsp" />
</bean>
<!-- spring与Spring-MVC的相关设置结束 -->
<!--=====================分隔线=====================-->
<!-- MyBatis设置开始 -->
<!-- 引入数据库属性文件,这里省掉了 -->
<!-- <context:property-placeholder location="classpath:db.properties" /> -->
<!--配置数据源 :这里使用的是jdbc BasicDataSource数据源,不推荐使用DriverManagerDataSource -->
<bean id="jdbcDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://127.0.0.1:3306/itqs" />
<property name="username" value="root" />
<property name="password" value="123456" />
</bean>
<!-- 配置sqlSessionFactory 用以产生SqlSession,其中ref=jdbcDataSource对应于上方的 <bean id='jdbcDataSource' -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 数据源 -->
<property name="dataSource" ref="jdbcDataSource"></property>
<!-- 别名
<property name="typeAliasesPackage" value="com.zr.activiti.entity"></property>-->
<!-- 指定mapper映射文件位置,映射文件名可以随意定义,建议最好是跟Dao放在一块名称一一对应 -->
<property name="mapperLocations" value="classpath:com/ssm/dao/*.xml" />
</bean>
<!-- 自动扫描对象关系映射 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!--指定会话工厂,如果当前上下文中只定义了一个则该属性可省去 -->
<!-- <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property> -->
<!-- 设置dao包路径,你可以使用分号或逗号 作为分隔符设置大于一个的包路径 -->
<property name="basePackage" value="com.ssm.dao" />
</bean>
<!--定义事务管理器,由spring管理数据库操作事务 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="jdbcDataSource"></property>
</bean>
<!--支持注解驱动的事务管理,指定事务管理器 -->
<tx:annotation-driven transaction-manager="transactionManager"/>
<!-- MyBatis设置结束 -->
</beans>

6,web.xml配件文件(这个必须的)

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>SSM</display-name>
<!-- 接入Spring-MVC和Spring,设置后所有访问的请求会被Spring-MVC拦截处理 -->
<servlet>
<servlet-name>Spring-MVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<!-- 这里的classpath:spring.xml对应于项目目录下的src/spring.xml -->
<param-value>classpath:spring.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Spring-MVC</servlet-name>
<!-- url-pattern中的/表示匹配所有的请求,也可以设置拦截特定的请求给Spring处理 -->
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>

7,index.jsp测试文件

<%@ page contentType="text/html;charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style>
table{border-collapse:collapse; font-size:14px;}
table td,th{ border:1px solid #98bf10;border-collapse:collapse; padding:5px 8px;}
table td{ text-align:center; padding:3px;}
table th{background-color:#A7C942;color:#FFF;font-size:15px;}
table .alt{ background-color:#EAF2D3;}
tr.change:hover{ background-color:#00FF00 }
</style>
</head>
<body>
Tips: Hello!这是一个基于SSM整合框架的测试<br><br>
<div id="all-div" >
<table width="500;" border="1">
<thead>
<th>登录id</th>
<th>名字</th>
<th>性别</th>
<th>手机</th>
</thead>
<tbody>
<c:forEach var="users" items="${userlist}">
<tr class="change">
<td>${users.loginid}</td>
<td>${users.loginname}</td>
<td>${users.sex}</td>
<td>${users.mobile}</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</body>
</html>

8,程序运行示例截图

9,原创博文,发贴实属不易,转载请注明出处!看完好使记得点个小红心。谢谢!

posted @   IT情深  阅读(160)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示