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,原创博文,发贴实属不易,转载请注明出处!看完好使记得点个小红心。谢谢!
本文来自博客园,作者:IT情深,转载请注明原文链接:https://www.cnblogs.com/wh445306/p/16751770.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?