SpringMVC 本来就是 Spring 框架的一部分,这两者无须再做整合,所以 SSM 整合的关键就是Spring对MyBatis的整合,三大框架整合完成后,将以 Spring 为核心,调用有关资源,高效运作,这篇文章主要介绍了 Spring 整合 MyBatis的实现步骤,需要的朋友可以参考下
以下是我的一个案例 供大家参考 最后有源码给大家
1.创建一个maven文件,如下
2.添加相关依赖
Spring 整合 MyBatis 开发环境除了需要 Spring 的jar包和 MyBatis 的jar包,还需要 Spring 与 MyBatis 整合的中间件 mybatis-spring-xxx.jar,此外还需要数据库驱动jar包 mysql-connector-java-xxx.jar。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.qs.spring_mybatis</groupId>
<artifactId>spring_mybatis</artifactId>
<version>1</version>
<packaging>war</packaging>
<name>spring_mybatis Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!--druid-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.9</version>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.9</version>
</dependency>
<!--IOC 依赖注入-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.9</version>
</dependency>
<!--mybatis&spring 整合包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.5</version>
</dependency>
<!--aspects 切面-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>5.3.9</version>
</dependency>
<!--jdbc-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.9</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.3.9</version>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.16</version>
</dependency>
<!-- 日志工具-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!-- 引用日志文件-->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<!--mybatis分页插件-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.2.1</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.3.9</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.3.9</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.9</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>5.3.9</version>
</dependency>
</dependencies>
<build>
<finalName>spring_mybatis</finalName>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
3.创建资源文件 对应文件名及其目录如下
config/jdbc.properties文件内容如下
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/company?characterEncoding=utf8
username=root
password=123456
# 初始化连接数量
initialSize=5
# 最大连接数
maxActive=10
# 最大等待时间
maxWait=3000
配置mybatis的核心资源文件
<?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>
<setting name="logImpl" value="STDOUT_LOGGING"/>
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!--全局开启二级缓存-->
<setting name="cacheEnabled" value="true"/>
</settings>
</configuration>
配置spring核心资源如下
<?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"
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">
<!-- <context:property-placeholder location="config/jdbc.properties"/> 此处使用这个扫描不管用,找到了下面的扫面注解的方式-->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="ignoreUnresolvablePlaceholders" value="true" />
<property name="locations">
<list>
<value>classpath:config/jdbc.properties</value>
</list>
</property>
</bean>
<!-- 扫描-->
<context:component-scan base-package="com.qs.spring_mybatis_exam"/>
<!-- 配置durid的配置-->
<bean name="durid" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${driverClassName}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</bean>
<!--sqlSessionFactory-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--设置数据库连接池-->
<property name="dataSource" ref="durid"></property>
<!--设置mybatis全局配置文件位置-->
<property name="configLocation" value="mybatis-config.xml"></property>
<!--设置别名的包-->
<property name="typeAliasesPackage" value="com.qs.spring_mybatis_exam"></property>
<!--设置mapper.xml文件的位置-->
<property name="mapperLocations" value="mapper/*.xml"></property>
</bean>
<!--mapper接口扫描 生成接口代理对象 同时完成对象的托管 后续加的-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.qs.spring_mybatis_exam.mapper"></property>
</bean>
</beans>
3.创建实体类及其对应的接口
实体类Product代码如下
package com.qs.spring_mybatis_exam.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.stereotype.Component;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
public class Product {
private int productID;
private String serialNumber;
private String name;
private String brand;
private String model;
private double price;
private String description;
}
接口ProductMapper 代码如下
package com.qs.spring_mybatis_exam.mapper;
import com.qs.spring_mybatis_exam.domain.Product;
import java.util.List;
public interface ProductMapper {
/**
* 增
* @param product
* @return
*/
int add(Product product);
/**
* 删
* @param id
* @return
*/
int del(int id);
/**
* 改
* @param product
* @return
*/
int update(Product product);
/**
* 查
* @param id
* @return
*/
List<Product> select(int id);
}
4.创建接口对应的映射文件
此时写第二部的spring核心资源文件中的提到的ProductMapper.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">
<mapper namespace="com.qs.spring_mybatis_exam.mapper.ProductMapper">
<insert id="add" parameterType="com.qs.spring_mybatis_exam.domain.Product" >
INSERT INTO PRODUCT (serialNumber,`name`) VALUES (#{serialNumber},#{name})
</insert>
<delete id="del" parameterType="int">
DELETE FROM PRODUCT WHERE PRODUCTID = #{id}
</delete>
<update id="update" parameterType="com.qs.spring_mybatis_exam.domain.Product">
UPDATE PRODUCT SET serialNumber=#{serialNumber},`name`=#{name} WHERE productID=#{productID};
</update>
<select id="select" parameterType="int" resultType="com.qs.spring_mybatis_exam.domain.Product">
SELECT * from PRODUCT WHERE PRODUCTID=#{productID};
</select>
</mapper>
5.创建业务层接口及其实现
package com.qs.spring_mybatis_exam.service;
import com.qs.spring_mybatis_exam.domain.Product;
import java.util.List;
public interface ProductService {
/**
* 增
* @param product
* @return
*/
int add(Product product);
/**
* 删
* @param id
* @return
*/
int del(int id);
/**
* 改
* @param product
* @return
*/
int update(Product product);
/**
* 查
* @param id
* @return
*/
List<Product> select(int id);
}
package com.qs.spring_mybatis_exam.service.Impl;
import com.qs.spring_mybatis_exam.mapper.ProductMapper;
import com.qs.spring_mybatis_exam.domain.Product;
import com.qs.spring_mybatis_exam.service.ProductService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class ProductServiceImpl implements ProductService {
@Resource
private ProductMapper productDao ;
@Override
public int add(Product product) {
return productDao.add(product);
}
@Override
public int del(int id) {
return productDao.del(id);
}
@Override
public int update(Product product) {
return productDao.update(product);
}
@Override
public List<Product> select(int id) {
return productDao.select(id);
}
}
6.测试
package com.qs.test;
import com.qs.spring_mybatis_exam.domain.Product;
import com.qs.spring_mybatis_exam.service.Impl.ProductServiceImpl;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {
//增
@org.junit.Test
public void test1(){
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
Product product = (Product) ctx.getBean("product");
product.setName("余三");
product.setSerialNumber("余二");
ProductServiceImpl p = (ProductServiceImpl) ctx.getBean("productServiceImpl");
p.add(product);
}
//删
@org.junit.Test
public void test2(){
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
int id = 27;
ProductServiceImpl p = (ProductServiceImpl) ctx.getBean("productServiceImpl");
p.del(id);
}
//改
@org.junit.Test
public void test3(){
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
Product product = (Product) ctx.getBean("product");
product.setProductID(26);
product.setName("二余");
product.setSerialNumber("二鱼");
ProductServiceImpl p = (ProductServiceImpl) ctx.getBean("productServiceImpl");
p.update(product);
}
//查
@org.junit.Test
public void test4(){
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
int id = 27;
ProductServiceImpl p = (ProductServiceImpl) ctx.getBean("productServiceImpl");
p.select(26);
}
}
以上就是全部的代码 有问题联系我