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,原创博文,发贴实属不易,转载请注明出处!看完好使记得点个小红心。谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值