MyBatis 是一款常用的持久层框架,使得程序能够以调用方法的方式执行某个指定的SQL,将执行SQL的底层逻辑进行封装。多数与Spring结合使用,本文讨论Spring如何整合Mybatis。
Spring 整合 MyBatis 可以实现让数据库连接,事务管理,实例化对象的创建与依赖关系等都统一由 Spring 负责,以及数据库的增删改查操作由 spring-mybatis 整合包提供的 SqlSessionTemplate 对象来操作,或者利用整合包扫描接口,依据 Mapper 映射文件直接创建代理实现类,无须程序员手工实现接口,大大简化了开发流程。SpringMVC 本来就是 Spring 框架的一部分,这两者无须再做整合,所以 SSM 整合的关键就是Spring对MyBatis的整合,三大框架整合完成后,将以 Spring 为核心,调用有关资源,高效运作。
一、Spring 项目整体目录结构
二、Spring 整合 MyBatis 开发环境
Spring 整合 MyBatis 开发环境除了需要 Spring 的jar包和 MyBatis 的jar包,还需要 Spring 与 MyBatis 整合的中间件 mybatis-spring-xxx.jar,此外还需要数据库驱动jar包 mysql-connector-java-xxx.jar。
三、Mapper 接口无实现类开发整合
项目案例:Spring + MyBatis 实现对 user 数据库的查询。
实现步骤:
【1】创建一个 Maven 项目,然后再 pom.xml 文件中添加相关依赖
【2】在 resources —> config 目录下,创建数据库配置文件 jdbc.properties
1 2 3 4 | jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql: ///java2218?serverTimezone=UTC&useSSL=false&characterEncoding=UTF-8 jdbc.username=root jdbc.password=root |
【3】在 resources —> config 目录下,创建 MyBatis 配置文件 mybatis-config.xml
1 |
【4】在 resources —> config 目录下,创建 Spring 配置文件 spring-config.xml
1 |
【5】创建实体类 User
1 2 3 4 5 6 7 8 9 10 11 12 13 | package cn.kgc.sm.entity; import lombok.Data; @Data public class User { private Integer uId; private String uName; private String uPassword; private Integer uState; } |
【6】创建 Mapper 接口 UserMapper
1 2 3 4 5 6 7 8 9 | package cn.kgc.sm.mapper; import cn.kgc.sm.entity.User; import java.util.List; public interface UserMapper { List selectAll(); } |
【7】创建与 UserMapper 接口映射的 UserMapper.xml 文件
1 | select * from user |
【8】创建 Service 业务层接口 UserService
1 2 3 4 5 6 7 8 9 10 | package cn.kgc.sm.service; import cn.kgc.sm.entity.User; import cn.kgc.sm.mapper.UserMapper; import java.util.List; public interface UserService { List selectAll(); } |
【9】创建 UserService 接口的实现类 UserServiceImpl
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | package cn.kgc.sm.service.impl; import cn.kgc.sm.entity.User; import cn.kgc.sm.mapper.UserMapper; import cn.kgc.sm.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service public class UserServiceImpl implements UserService { @Autowired UserMapper userMapper; @Override public List selectAll() { System.out.println( "users = " ); List users = userMapper.selectAll(); System.out.println( "users = " + users); return users; } } |
【10】创建测试类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | package cn.kgc.sm.mapper; import cn.kgc.sm.entity.User; import cn.kgc.sm.service.UserService; import junit.framework.TestCase; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import java.util.List; @RunWith (SpringJUnit4ClassRunner. class ) @ContextConfiguration ( "classpath:config/spring-config.xml" ) public class UserMapperTest { @Autowired UserService userService; @Test public void Test01(){ List users = userService.selectAll(); users.forEach(user -> System.out.println( "user = " + user)); // for (User user : users) { // System.out.println("user = " + user); // } } } |
运行结果:
到此这篇关于 Spring 整合 MyBatis的文章就介绍到这了,更多相关 Spring 整合 MyBatis内容请搜索IT俱乐部以前的文章或继续浏览下面的相关文章希望大家以后多多支持IT俱乐部!