【mybatis+spring+springMVC的整合】
【源码:https://download.csdn.net/download/m0_70083523/86949684?spm=1001.2014.3001.5503 】
这里的jar包应该算是比较全的啦,有些版本我统一定为了4.0.2.RELEAS,不管哪个版本,maven私服都可以很快的下载好~~
<properties>
<spring.version>4.0.2.RELEASEspring.version>
properties>
<properties>
<spring.version>4.0.2.RELEASEspring.version>
properties>
<dependencies>
<dependency>
<groupId>log4jgroupId>
<artifactId>log4jartifactId>
<version>1.2.17version>
dependency>
<dependency>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
<version>1.16.12version>
dependency>
<dependency>
<groupId>com.mchangegroupId>
<artifactId>c3p0artifactId>
<version>0.9.5.5version>
dependency>
<dependency>
<groupId>com.fasterxml.jackson.coregroupId>
<artifactId>jackson-coreartifactId>
<version>2.4.3version>
dependency>
<dependency>
<groupId>com.fasterxml.jackson.coregroupId>
<artifactId>jackson-databindartifactId>
<version>2.4.3version>
dependency>
<dependency>
<groupId>org.mybatisgroupId>
<artifactId>mybatisartifactId>
<version>3.5.2version>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>5.1.44version>
dependency>
<dependency>
<groupId>org.mybatisgroupId>
<artifactId>mybatis-springartifactId>
<version>2.0.6version>
dependency>
<dependency>
<groupId>org.aspectjgroupId>
<artifactId>aspectjweaverartifactId>
<version>1.9.7version>
<scope>runtimescope>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-testartifactId>
<version>${spring.version}version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-coreartifactId>
<version>${spring.version}version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-oxmartifactId>
<version>${spring.version}version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-txartifactId>
<version>${spring.version}version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-jdbcartifactId>
<version>${spring.version}version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-aopartifactId>
<version>${spring.version}version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-contextartifactId>
<version>${spring.version}version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-context-supportartifactId>
<version>${spring.version}version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-expressionartifactId>
<version>${spring.version}version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-ormartifactId>
<version>${spring.version}version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-webartifactId>
<version>${spring.version}version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-webmvcartifactId>
<version>${spring.version}version>
dependency>
<dependency>
<groupId>javax.servletgroupId>
<artifactId>jstlartifactId>
<version>1.2version>
dependency>
<dependency>
<groupId>javax.servletgroupId>
<artifactId>servlet-apiartifactId>
<version>2.5version>
dependency>
<dependency>
<groupId>javax.servlet.jspgroupId>
<artifactId>jsp-apiartifactId>
<version>2.2version>
dependency>
dependencies>
【初步整合三个配置文件:mybatis.xml、spring-mybatis.xml、spring-mvc.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>
<settings>
<!--打印日志: STDOUT_LOGGING为输出SQL语句到控制台,LOG4J参数为输出在日志文件-->
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
<!--将实体类所在的整个包定义别名,在resultType使用的别名就是实体类的名字,不分大小写-->
<!--我不在这里使用因为mybatisX插件会帮我生成一些东西,别名没意义-->
<!-- <typeAliases>-->
<!-- <package name="com.hz.pojo" />-->
<!-- </typeAliases>-->
</configuration>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
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/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
<!--读取数据库配置文件 jdbc.properties:连接数据库要用的-->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!--创建数据源对象DataSource-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driver}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<!--<property name="maxPoolSize" value="${c3p0.maxPoolSize}"/>-->
</bean>
<!--创建数据源工厂-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--注入数据库连接池-->
<property name="dataSource" ref="dataSource"/>
<!--扫描 pojo 别名-->
<property name="typeAliasesPackage" value="com.hz.pojo"/>
<!--扫描mapper文件-->
<property name="mapperLocations" value="classpath:mapper/*.xml"/>
<!--读取mybatis主配置文件-->
<property name="configLocation" value="classpath:mybatis.xml"/>
</bean>
<!--配置mybatis数据源 dao层-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 注入sqlSessionFactory -->
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
<!-- 给出需要扫描Dao接口包 注解 -->
<property name="basePackage" value="com.hz.dao"/>
</bean>
<!--扫描service包-->
<context:component-scan base-package="com.hz.service"/>
</beans>
<?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:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
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">
<!--自动扫描的包名,只扫描@Controller -->
<context:component-scan base-package="com.hz.controller" />
<!--开启注解-->
<mvc:annotation-driven/>
<!--配置静态资源-->
<!-- <mvc:default-servlet-handler/>-->
<!-- 视图解析器 -->
<!-- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" >-->
<!-- <property name="prefix" value="/WEB-INF/文件夹"/>-->
<!-- <property name="suffix" value=".jsp"/>-->
<!-- </bean>-->
</beans>
注释:
1.配置静态资源:下面解释…………
2.视图解析器:后期项目jsp页面和html页面会在WEB-INF里面,这是访问就要加视图解析器,否则全路径也是访问不到的。【可以了解一下多视图解析器】
Filter要放在读取配置的上面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 Applicationdisplay-name>
<filter>
<filter-name>encodingFilterfilter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
<init-param>
<param-name>encodingparam-name>
<param-value>UTF-8param-value>
init-param>
filter>
<filter-mapping>
<filter-name>encodingFilterfilter-name>
<url-pattern>/*url-pattern>
filter-mapping>
<servlet>
<servlet-name>springservlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
<init-param>
<param-name>contextConfigLocationparam-name>
<param-value>classpath:spring-*.xmlparam-value>
init-param>
<load-on-startup>1load-on-startup>
servlet>
<servlet-mapping>
<servlet-name>springservlet-name>
<url-pattern>/url-pattern>
servlet-mapping>
web-app>
注意:
我们会在webapp(这个名字不一定)中创建文件夹放jsp页面或者jar包等,我们直接访问这些资源访问不到,原因:在web.xml中会使所有访问路径都会经过DispatcherServlet,去找映射,静态文件没有映射,会404。/ 解决:
- 在
spring-mvc.xml中使用配置静态资源。- 或者使用:
< mvc:resources mapping=" " location=" " /><mvc:resources mapping="/**" location="/statics/" /> <mvc:resources mapping="/*" location="/statics/" /> <mvc:resources mapping="/**" location="/statics/,/views/" />
- 1
- 2
- 3
- 4
- 5
- 6
1.位于标签内,其他标签外,属于上下文初始化参数配置信息。对于整个webapp内的所有servlet类都可见,所有servlet类都可获取该信息。
2. 如果某些信息所有servlet类都需要使用,可以配置到该标签内。
123
123
1.位于标签内,属于servlet初始化参数配置信息。只对于该servlet类可见,其他servlet类不能获取该信息。
2. 如果某些信息只能让该servlet类单独使用,其他servlet类不能访问,可以配置到该标签内。
1546
19
▶①在上面配置文件中读取了jdbc.properties文件要加入,若是有日志输出也需要日志文件。
jdbc.properties
jdbc.driverClassName = com.mysql.jdbc.Driver
jdbc.url =jdbc:mysql://127.0.0.1:3306/数据库名?userSSl=false&userServerPrepStmts=true
jdbc.username = root
jdbc.password = root
日志文件:连接自取
https://blog.csdn.net/m0_70083523/article/details/127498052?spm=1001.2014.3001.5502
▶②创建目录:
【这个没啥说的,都到整合框架了不说都懂滴滴♕】

实体类:根据sql中的参数定义
dao层接口
public interface ProviderMapper {
/**
*
* @param proName
* @return
*/
public List<Provider> providerList(
@Param("proName") String proName
);
}
mapper.xml 根据姓名的模糊查询
<select id="providerList" resultType="Provider">
select id,proCode,proName,proDesc,proContact,proPhone,proAddress,proFax,createdBy,creationDate,modifyBy,modifyDate
from smbms_provider
<where>
<if test="proName != null">
and proName like concat('%',#{proName},'%')
if>
where>
select>
service层接口
public interface ProviderService {
/**
*
* @param proName
* @return
*/
public List<Provider> providerList(String proName);
}
service层实现
@Service
public class ProviderServiceImpl implements ProviderService {
@Autowired
private ProviderMapper providerMapper;
public List<Provider> providerList(String proName)
{
return providerMapper.providerList(proName);
}
}
controller
@Controller
@RequestMapping("/provider")
public class ProviderController {
@Autowired
private ProviderService providerService;
@RequestMapping(value = "/providerList",method = RequestMethod.GET)
public String providerList(String proName){
//System.out.println("proName=="+proName);
List<Provider> providers = (List<Provider>) providerService.providerList(proName);
return "index"; //返回页面(这种形式是因为视图解析器的存在)
}
}
jsp页面:
<%@ page contentType="text/html;charset=UTF-8" isELIgnored="false" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>供应商列表title>
head>
<body>
<table border=1>
<thead>
<th>供应商编码th>
<th>供应商名称th>
<th>供应商详细描述th>
……
<th>操作th>
thead>
<tbody>
<c:forEach var="pro" items="${providers}">
<tr>
<td>${pro.proCode }td>
<td>${pro.proName }td>
<td>${pro.proDesc }td>
……
<td><a href="">修改a>/<a href="">删除a>td>
tr>
c:forEach>
tbody>
table>
body>
html>
▶③开启Tomcat进行测试
……
如果要使用JSTL和EL表达式:
isELIgnored="false"<dependency>
<groupId>javax.servletgroupId>
<artifactId>jstlartifactId>
<version>1.2version>
dependency>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%@ page contentType="text/html;charset=UTF-8" isELIgnored="false" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<body>
<h2>Hello 朱尔斯Jules!h2>
body>
html>
注意:1、前面的xml配置文件,我命名为
spring-xxxx.xml,所以在web.xml中读取文件配置中注意路径:使用了星号。classpath:spring-*.xml
2、在没有创建目录之前,xml配置中有些地方报红,是因为我们还有创建这个目录。
3、如果有报错看不懂,配置上没问题,那就是java文件中写的有误……