如何实现Mybatis、Spring、SpringMVC框架的SSM整合?

2026-05-19 13:031阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计2987个文字,预计阅读时间需要12分钟。

如何实现Mybatis、Spring、SpringMVC框架的SSM整合?

SSM整合Maven依赖配置示例:xml junit junit 4.13 test org.springframework spring-core

SSM整合 Maven依赖包

<!-- 测试工具--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13</version> <scope>test</scope> </dependency> <!-- Spring重要核心--> <!-- mvnrepository.com/artifact/org.springframework/spring-webmvc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.16</version> </dependency> <!-- SpringAOP织入--> <!-- mvnrepository.com/artifact/org.aspectj/aspectjweaver --> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.9.4</version> </dependency> <!-- spring中的Mybatis--> <!-- mvnrepository.com/artifact/org.mybatis/mybatis-spring --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>2.0.6</version> </dependency> <!-- mysql驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.21</version> </dependency> <!-- spring的jdbc(使用连接池技术可不用)--> <!-- mvnrepository.com/artifact/org.springframework/spring-jdbc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.3.16</version> </dependency> <!-- 数据库连接池 --> <dependency> <groupId>com.mchange</groupId> <artifactId>c3p0</artifactId> <version>0.9.5.2</version> </dependency> <!-- Mybatis--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.7</version> </dependency> <!--Servlet - JSP --> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.1</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency>

Maven资源过滤文件

如何实现Mybatis、Spring、SpringMVC框架的SSM整合?

<build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> </resources> </build> pojo实体类

实体类User

package com.pojo; public class User { private int id; private String name; private String pwd; public User() { } public User(int id, String name, String pwd) { this.id = id; this.name = name; this.pwd = pwd; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", pwd='" + pwd + '\'' + '}'; } /* getter 和 setter */ } dao层 数据库相关配置与Mybatis 数据库配置文件

database.properties

# 注意! 使用了 c3p0 数据库链接池的属性要设置为 jdbc.属性名,不加会报错! jdbc.driver = com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8 jdbc.username=root jdbc.password=123456 mybati核心配置

mybatis-config.xml , 也可以进行mybatis其他的设置,如起别名等

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <mappers> <!-- 将包内的映射器接口实现全部注册为映射器,注意配置文件要与接口同名同包 --> <package name="com.dao"/> </mappers> </configuration> Spring中dao层配置文件

spring-dao.xml

<beans xmlns="www.springframework.org/schema/beans" xmlns:xsi="www.w3.org/2001/XMLSchema-instance" xmlns:context="www.springframework.org/schema/context" xsi:schemaLocation="www.springframework.org/schema/beans www.springframework.org/schema/beans/spring-beans.xsd www.springframework.org/schema/context www.springframework.org/schema/context/spring-context.xsd"> <!-- 配置整合mybatis --> <!-- 关联数据库配置文件 --> <context:property-placeholder location="classpath:database.properties"/> <!-- 2.设置mybatis数据源 --> <!--数据库连接池 dbcp 半自动化操作 不能自动连接 c3p0 自动化操作(自动的加载配置文件 并且设置到对象里面) --> <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}"/> <!-- c3p0连接池的私有属性--> <!-- <property name="maxPoolSize" value="30"/>--> <!-- <property name="minPoolSize" value="10"/>--> <!-- 关闭连接后不自动commit--> <!-- <property name="autoCommitOnClose" value="false"/>--> <!-- 获取连接超时时间--> <!-- <property name="checkoutTimeout" value="10000"/>--> <!-- 当获取连接失败重试次数--> <!-- <property name="acquireRetryAttempts" value="2"/>--> </bean> <!-- 3.配置SqlSessionFactory对象 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 注入数据库连接池 --> <property name="dataSource" ref="dataSource"/> <!-- 关联MyBaties核心配置文件 --> <property name="configLocation" value="classpath:mybatis-config.xml"/> </bean> <!-- 4.配置扫描Dao接口包,动态实现Dao接口注入到spring容器中 --> <!--解释 :www.cnblogs.com/jpfss/p/7799806.html Mybatis在与Spring集成的时候可以配置MapperFactoryBean来生成Mapper接口的代理. MapperFactoryBean 创建的代理类实现了 UserMapper 接口,并且注入到应用程序中。 因为代理创建在运行时环境中(Runtime,译者注) ,那么指定的映射器必须是一个接口,而 不是一个具体的实现类。 没有必要在Spring的XML配置文件中注册所有的映射器。相反,你可以使用一个MapperScannerConfigurer, 它将会查找类路 径 下 的 映射器并自动将它们创建成MapperFactoryBean。 <注意!!!>, 没有必要去指定SqlSessionFactory 或 SqlSessionTemplate , 因为MapperScannerConfigurer 将会创建 MapperFactoryBean,之后自动装配。但是,如果你使 用了一个以上的 DataSource ,那么自动装配可能会失效 。这种 情况下,你可以使用 sqlSessionFactoryBeanName 或 sqlSessionTemplateBeanName 属性来设置正确的 bean 名 称来使用。这就是它如何来配置的,<注意!!!>bean的名称是必须的,而不是 bean 的引用,因 此,value 属性在这里替代通常的 ref: 即: 这个扫描类帮我们做了这些事: 扫描指定包下的接口,获得Mapper对象,随后业务层将会用到此Mapper来进行操作 ApplicationContext context = new ClassPathXmlApplicationContext("appconfig.xml"); UserDao userDaoMapper = context.getBean("daoMapper", DaoMapper.class).getMapper(UserDao.class); --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 注入sqlSessionFactory --> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/> <!-- 给出需要扫描Dao接口包 --> <property name="basePackage" value="com.dao"/> </bean> </beans> dao接口 UserMapper

package com.dao; import com.pojo.User; import org.apache.ibatis.annotations.Param; import java.util.List; public interface UserMapper { List getAllUser(); int addUser(User user); int deleteUser(@Param("id") int id); int updateUser(User user); User getUser(@Param("id") int id); } 接口映射器(sql配置)

如果是配置文件,最好和接口同包同名 , 也可以在接口上使用注解

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.dao.UserMapper"> <insert id="addUser" parameterType="com.pojo.User"> insert into `user` values (#{id}, #{name}, #{pwd}); </insert> <delete id="deleteUser" parameterType="int"> delete from `user` where id=#{id} </delete> <update id="updateUser" parameterType="com.pojo.User"> update `user` set id = #{id},name = #{name},pwd = #{pwd} where id = #{id} </update> <select id="getUser" resultType="int"> select * from `user` where id = #{id}; </select> <select id="getAllUser" resultType="com.pojo.User"> SELECT * from `user` </select> </mapper> service层(业务层)

Service接口 ,非必需,根据项目情况而定

package com.service; import com.pojo.User; import org.apache.ibatis.annotations.Param; import java.util.List; interface UserService { List getAllUser(); int addUser(User user); int deleteUser(@Param("id") int id); int updateUser(User user); User getUser(@Param("id") int id); } Service实现类

ServiceImp

package com.service; import com.dao.UserMapper; import com.pojo.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; import java.util.List; @Service public class UserServiceImp implements UserService { /* 业务层调用dao层(Mapper对象)来执行对应的数据库操作; 对应接口的MapperBean由Spring的MapperScannerConfigurer生成 由于UserMapper的映射器对象已经在spring-dao.xml配置中用扫描器注册了,所以可以使用自动装配 此外: // 官方不建议字段自动装配,而是推荐setter注入更灵活 */ @Autowired @Qualifier("userMapper") private UserMapper userMapper; @Override public List getAllUser() { return userMapper.getAllUser(); } @Override public int addUser(User user) { return userMapper.addUser(user); } @Override public int deleteUser(int id) { return userMapper.deleteUser(id); } @Override public int updateUser(User user) { return userMapper.updateUser(user); } @Override public User getUser(int id) { return userMapper.getUser(id); } } Spring中Service层配置文件

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="www.springframework.org/schema/beans" xmlns:xsi="www.w3.org/2001/XMLSchema-instance" xmlns:context="www.springframework.org/schema/context" xsi:schemaLocation="www.springframework.org/schema/beans www.springframework.org/schema/beans/spring-beans.xsd www.springframework.org/schema/context www.springframework.org/schema/context/spring-context.xsd"> <!-- 扫描service相关的bean --> <context:component-scan base-package="com.service" /> <!-- UserServiceImpl注入到IOC容器中,用 注解@Service来注册bean了就不在需要 <bean id="UserServiceImpl" class="com.service.UserServiceImp"> 这里引用的userMapper,在spring-dao.xml中注入了,使用到了Spring自带的扫描器 MapperScannerConfigurer <property name="userMapper" ref="userMapper"/> </bean> --> <!-- 配置事务管理器,为啥要在这里配置事务管理呢,因为业务层嘛,可能会有一些会回滚的操作,所以业务层才需要事务管理 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <!-- 注入数据库连接池,在spring-dao.xml里配置啦 --> <property name="dataSource" ref="dataSource" /> </bean> </beans> controller层 控制器

UserController.java

package com.controller; import com.pojo.User; import com.service.UserServiceImp; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; @Controller @RequestMapping("/user") public class UserController { /* controller层调用业务层, 业务层通过 @Service 注解在Spring中注入了 这里自动装配 业务层实现类(bean对象) 控制层通过调用业务层实现类来进行对应的业务操作 */ @Autowired // 官方不建议字段注入 自动装配,而是推荐setter注入更灵活更安全 @Qualifier("userServiceImp") private UserServiceImp mapperImp; //由于类也有url,所以请求的url为:user/getAllUser @RequestMapping(value = "/getAllUser",produces = "text/html;charset=utf-8") @ResponseBody public String getAllUser(){ String date =""; List<User> users = mapperImp.getAllUser(); for (User user:users){ date+=user+"<br>" ; System.out.println(user); } //返回数据 return date; } } Spring中的控制层配置文件

spring-controller.xml

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="www.springframework.org/schema/beans" xmlns:xsi="www.w3.org/2001/XMLSchema-instance" xmlns:context="www.springframework.org/schema/context" xmlns:mvc="www.springframework.org/schema/mvc" xsi:schemaLocation="www.springframework.org/schema/beans www.springframework.org/schema/beans/spring-beans.xsd www.springframework.org/schema/context www.springframework.org/schema/context/spring-context.xsd www.springframework.org/schema/mvc www.springframework.org/schema/mvc/spring-mvc.xsd"> <!-- 4.扫描web相关的bean --> <context:component-scan base-package="com.controller" /> <!-- 配置SpringMVC --> <!-- 1.开启SpringMVC注解驱动 --> <mvc:annotation-driven /> <!-- 2.静态资源默认servlet配置--> <mvc:default-servlet-handler/> <!-- 3.配置jsp 设置ViewResolver视图解析器相关属性 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean> </beans> Spring整合所有应用上下文配置

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="www.springframework.org/schema/beans" xmlns:xsi="www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="www.springframework.org/schema/beans www.springframework.org/schema/beans/spring-beans.xsd"> <import resource="spring-dao.xml"/> <!--引入dao层配置--> <import resource="spring-service.xml"/> <!--引入业务层配置--> <import resource="spring-controller.xml"/> <!--引入控制层层配置--> </beans> web配置

配置整个web应用程序的配置文件``web.xml`

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="xmlns.jcp.org/xml/ns/javaee xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <!--DispatcherServlet--> <servlet> <servlet-name>DispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <!--一定要注意:我们这里加载的是总的配置文件,之前被这里坑了 tomcat是根据总配置文件来启动的--> <param-value>classpath:applicationContext.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>DispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!--encodingFilter--> <filter> <filter-name>encodingFilter</filter-name> <filter-class> org.springframework.web.filter.CharacterEncodingFilter </filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!--Session过期时间(根据需要设置)--> <session-config> <session-timeout>15</session-timeout> </session-config> </web-app>

至此,所有的配置都做完了,完结撒花

本文共计2987个文字,预计阅读时间需要12分钟。

如何实现Mybatis、Spring、SpringMVC框架的SSM整合?

SSM整合Maven依赖配置示例:xml junit junit 4.13 test org.springframework spring-core

SSM整合 Maven依赖包

<!-- 测试工具--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13</version> <scope>test</scope> </dependency> <!-- Spring重要核心--> <!-- mvnrepository.com/artifact/org.springframework/spring-webmvc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.16</version> </dependency> <!-- SpringAOP织入--> <!-- mvnrepository.com/artifact/org.aspectj/aspectjweaver --> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.9.4</version> </dependency> <!-- spring中的Mybatis--> <!-- mvnrepository.com/artifact/org.mybatis/mybatis-spring --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>2.0.6</version> </dependency> <!-- mysql驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.21</version> </dependency> <!-- spring的jdbc(使用连接池技术可不用)--> <!-- mvnrepository.com/artifact/org.springframework/spring-jdbc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.3.16</version> </dependency> <!-- 数据库连接池 --> <dependency> <groupId>com.mchange</groupId> <artifactId>c3p0</artifactId> <version>0.9.5.2</version> </dependency> <!-- Mybatis--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.7</version> </dependency> <!--Servlet - JSP --> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.1</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency>

Maven资源过滤文件

如何实现Mybatis、Spring、SpringMVC框架的SSM整合?

<build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> </resources> </build> pojo实体类

实体类User

package com.pojo; public class User { private int id; private String name; private String pwd; public User() { } public User(int id, String name, String pwd) { this.id = id; this.name = name; this.pwd = pwd; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", pwd='" + pwd + '\'' + '}'; } /* getter 和 setter */ } dao层 数据库相关配置与Mybatis 数据库配置文件

database.properties

# 注意! 使用了 c3p0 数据库链接池的属性要设置为 jdbc.属性名,不加会报错! jdbc.driver = com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8 jdbc.username=root jdbc.password=123456 mybati核心配置

mybatis-config.xml , 也可以进行mybatis其他的设置,如起别名等

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <mappers> <!-- 将包内的映射器接口实现全部注册为映射器,注意配置文件要与接口同名同包 --> <package name="com.dao"/> </mappers> </configuration> Spring中dao层配置文件

spring-dao.xml

<beans xmlns="www.springframework.org/schema/beans" xmlns:xsi="www.w3.org/2001/XMLSchema-instance" xmlns:context="www.springframework.org/schema/context" xsi:schemaLocation="www.springframework.org/schema/beans www.springframework.org/schema/beans/spring-beans.xsd www.springframework.org/schema/context www.springframework.org/schema/context/spring-context.xsd"> <!-- 配置整合mybatis --> <!-- 关联数据库配置文件 --> <context:property-placeholder location="classpath:database.properties"/> <!-- 2.设置mybatis数据源 --> <!--数据库连接池 dbcp 半自动化操作 不能自动连接 c3p0 自动化操作(自动的加载配置文件 并且设置到对象里面) --> <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}"/> <!-- c3p0连接池的私有属性--> <!-- <property name="maxPoolSize" value="30"/>--> <!-- <property name="minPoolSize" value="10"/>--> <!-- 关闭连接后不自动commit--> <!-- <property name="autoCommitOnClose" value="false"/>--> <!-- 获取连接超时时间--> <!-- <property name="checkoutTimeout" value="10000"/>--> <!-- 当获取连接失败重试次数--> <!-- <property name="acquireRetryAttempts" value="2"/>--> </bean> <!-- 3.配置SqlSessionFactory对象 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 注入数据库连接池 --> <property name="dataSource" ref="dataSource"/> <!-- 关联MyBaties核心配置文件 --> <property name="configLocation" value="classpath:mybatis-config.xml"/> </bean> <!-- 4.配置扫描Dao接口包,动态实现Dao接口注入到spring容器中 --> <!--解释 :www.cnblogs.com/jpfss/p/7799806.html Mybatis在与Spring集成的时候可以配置MapperFactoryBean来生成Mapper接口的代理. MapperFactoryBean 创建的代理类实现了 UserMapper 接口,并且注入到应用程序中。 因为代理创建在运行时环境中(Runtime,译者注) ,那么指定的映射器必须是一个接口,而 不是一个具体的实现类。 没有必要在Spring的XML配置文件中注册所有的映射器。相反,你可以使用一个MapperScannerConfigurer, 它将会查找类路 径 下 的 映射器并自动将它们创建成MapperFactoryBean。 <注意!!!>, 没有必要去指定SqlSessionFactory 或 SqlSessionTemplate , 因为MapperScannerConfigurer 将会创建 MapperFactoryBean,之后自动装配。但是,如果你使 用了一个以上的 DataSource ,那么自动装配可能会失效 。这种 情况下,你可以使用 sqlSessionFactoryBeanName 或 sqlSessionTemplateBeanName 属性来设置正确的 bean 名 称来使用。这就是它如何来配置的,<注意!!!>bean的名称是必须的,而不是 bean 的引用,因 此,value 属性在这里替代通常的 ref: 即: 这个扫描类帮我们做了这些事: 扫描指定包下的接口,获得Mapper对象,随后业务层将会用到此Mapper来进行操作 ApplicationContext context = new ClassPathXmlApplicationContext("appconfig.xml"); UserDao userDaoMapper = context.getBean("daoMapper", DaoMapper.class).getMapper(UserDao.class); --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 注入sqlSessionFactory --> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/> <!-- 给出需要扫描Dao接口包 --> <property name="basePackage" value="com.dao"/> </bean> </beans> dao接口 UserMapper

package com.dao; import com.pojo.User; import org.apache.ibatis.annotations.Param; import java.util.List; public interface UserMapper { List getAllUser(); int addUser(User user); int deleteUser(@Param("id") int id); int updateUser(User user); User getUser(@Param("id") int id); } 接口映射器(sql配置)

如果是配置文件,最好和接口同包同名 , 也可以在接口上使用注解

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.dao.UserMapper"> <insert id="addUser" parameterType="com.pojo.User"> insert into `user` values (#{id}, #{name}, #{pwd}); </insert> <delete id="deleteUser" parameterType="int"> delete from `user` where id=#{id} </delete> <update id="updateUser" parameterType="com.pojo.User"> update `user` set id = #{id},name = #{name},pwd = #{pwd} where id = #{id} </update> <select id="getUser" resultType="int"> select * from `user` where id = #{id}; </select> <select id="getAllUser" resultType="com.pojo.User"> SELECT * from `user` </select> </mapper> service层(业务层)

Service接口 ,非必需,根据项目情况而定

package com.service; import com.pojo.User; import org.apache.ibatis.annotations.Param; import java.util.List; interface UserService { List getAllUser(); int addUser(User user); int deleteUser(@Param("id") int id); int updateUser(User user); User getUser(@Param("id") int id); } Service实现类

ServiceImp

package com.service; import com.dao.UserMapper; import com.pojo.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; import java.util.List; @Service public class UserServiceImp implements UserService { /* 业务层调用dao层(Mapper对象)来执行对应的数据库操作; 对应接口的MapperBean由Spring的MapperScannerConfigurer生成 由于UserMapper的映射器对象已经在spring-dao.xml配置中用扫描器注册了,所以可以使用自动装配 此外: // 官方不建议字段自动装配,而是推荐setter注入更灵活 */ @Autowired @Qualifier("userMapper") private UserMapper userMapper; @Override public List getAllUser() { return userMapper.getAllUser(); } @Override public int addUser(User user) { return userMapper.addUser(user); } @Override public int deleteUser(int id) { return userMapper.deleteUser(id); } @Override public int updateUser(User user) { return userMapper.updateUser(user); } @Override public User getUser(int id) { return userMapper.getUser(id); } } Spring中Service层配置文件

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="www.springframework.org/schema/beans" xmlns:xsi="www.w3.org/2001/XMLSchema-instance" xmlns:context="www.springframework.org/schema/context" xsi:schemaLocation="www.springframework.org/schema/beans www.springframework.org/schema/beans/spring-beans.xsd www.springframework.org/schema/context www.springframework.org/schema/context/spring-context.xsd"> <!-- 扫描service相关的bean --> <context:component-scan base-package="com.service" /> <!-- UserServiceImpl注入到IOC容器中,用 注解@Service来注册bean了就不在需要 <bean id="UserServiceImpl" class="com.service.UserServiceImp"> 这里引用的userMapper,在spring-dao.xml中注入了,使用到了Spring自带的扫描器 MapperScannerConfigurer <property name="userMapper" ref="userMapper"/> </bean> --> <!-- 配置事务管理器,为啥要在这里配置事务管理呢,因为业务层嘛,可能会有一些会回滚的操作,所以业务层才需要事务管理 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <!-- 注入数据库连接池,在spring-dao.xml里配置啦 --> <property name="dataSource" ref="dataSource" /> </bean> </beans> controller层 控制器

UserController.java

package com.controller; import com.pojo.User; import com.service.UserServiceImp; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; @Controller @RequestMapping("/user") public class UserController { /* controller层调用业务层, 业务层通过 @Service 注解在Spring中注入了 这里自动装配 业务层实现类(bean对象) 控制层通过调用业务层实现类来进行对应的业务操作 */ @Autowired // 官方不建议字段注入 自动装配,而是推荐setter注入更灵活更安全 @Qualifier("userServiceImp") private UserServiceImp mapperImp; //由于类也有url,所以请求的url为:user/getAllUser @RequestMapping(value = "/getAllUser",produces = "text/html;charset=utf-8") @ResponseBody public String getAllUser(){ String date =""; List<User> users = mapperImp.getAllUser(); for (User user:users){ date+=user+"<br>" ; System.out.println(user); } //返回数据 return date; } } Spring中的控制层配置文件

spring-controller.xml

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="www.springframework.org/schema/beans" xmlns:xsi="www.w3.org/2001/XMLSchema-instance" xmlns:context="www.springframework.org/schema/context" xmlns:mvc="www.springframework.org/schema/mvc" xsi:schemaLocation="www.springframework.org/schema/beans www.springframework.org/schema/beans/spring-beans.xsd www.springframework.org/schema/context www.springframework.org/schema/context/spring-context.xsd www.springframework.org/schema/mvc www.springframework.org/schema/mvc/spring-mvc.xsd"> <!-- 4.扫描web相关的bean --> <context:component-scan base-package="com.controller" /> <!-- 配置SpringMVC --> <!-- 1.开启SpringMVC注解驱动 --> <mvc:annotation-driven /> <!-- 2.静态资源默认servlet配置--> <mvc:default-servlet-handler/> <!-- 3.配置jsp 设置ViewResolver视图解析器相关属性 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean> </beans> Spring整合所有应用上下文配置

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="www.springframework.org/schema/beans" xmlns:xsi="www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="www.springframework.org/schema/beans www.springframework.org/schema/beans/spring-beans.xsd"> <import resource="spring-dao.xml"/> <!--引入dao层配置--> <import resource="spring-service.xml"/> <!--引入业务层配置--> <import resource="spring-controller.xml"/> <!--引入控制层层配置--> </beans> web配置

配置整个web应用程序的配置文件``web.xml`

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="xmlns.jcp.org/xml/ns/javaee xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <!--DispatcherServlet--> <servlet> <servlet-name>DispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <!--一定要注意:我们这里加载的是总的配置文件,之前被这里坑了 tomcat是根据总配置文件来启动的--> <param-value>classpath:applicationContext.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>DispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!--encodingFilter--> <filter> <filter-name>encodingFilter</filter-name> <filter-class> org.springframework.web.filter.CharacterEncodingFilter </filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!--Session过期时间(根据需要设置)--> <session-config> <session-timeout>15</session-timeout> </session-config> </web-app>

至此,所有的配置都做完了,完结撒花