学会Spring+Mybatis整合,轻松驾驭数据库操作!

文摘   2024-12-01 23:22   江苏  

桥哥我又来啦!今天咱们要征服的主题是——Spring 和 Mybatis 的整合!啥?整合?听起来很高大上?别怕,桥哥带你飞!其实整合就像给 Spring 和 Mybatis 牵个红线,让它们愉快地合作,发挥各自的优势,从此过上幸福美满的生活(数据库操作更方便啦!)。

一、为什么需要整合?

Spring 就像一个大管家,负责管理项目中各种对象,而 Mybatis 则是数据库访问高手。整合之后,Spring 就能帮我们管理 Mybatis 中的核心对象 SqlSessionFactory,相当于给 Mybatis 请了个助理,让它更专注于数据库操作,不用操心创建和管理 SqlSessionFactory 的琐事。

二、整合三步走

整合 Spring 和 Mybatis,就像做三明治一样简单:

  1. 准备食材: 引入必要的 jar 包,就像买好面包、火腿和芝士。
  2. 配置 Spring: 告诉 Spring 如何创建和管理 SqlSessionFactory 和数据源,就像把面包切片,放上火腿和芝士。
  3. 连接 Mybatis: 将 Mybatis 的 Mapper 接口交给 Spring 管理,就像把三明治的两片面包合在一起。

三、实战演练:DAO 层整合

1. 引入依赖

<dependency>    <groupId>org.mybatis</groupId>    <artifactId>mybatis</artifactId>    <version>3.2.8</version></dependency><dependency>    <groupId>org.mybatis</groupId>    <artifactId>mybatis-spring</artifactId>    <version>1.3.1</version></dependency><!-- 其他 Spring 相关依赖 -->

这些依赖就像做菜的调料,缺一不可。mybatis-spring 就是 Spring 和 Mybatis 的“红娘”!

2. 配置数据源和 SqlSessionFactory

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>    <property name="url" value="jdbc:mysql://192.168.64.128:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai"/>    <property name="username" value="root"/>    <property name="password" value="123456"/></bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="mapperLocations" value="classpath:com/txw/mapper/*.xml"/></bean>

这里我们配置了数据源,告诉 Spring 如何连接数据库。然后配置 SqlSessionFactory,它就像一个工厂,负责生产 SqlSession,SqlSession 才是真正和数据库交互的“搬运工”。

3. 将 Mapper 接口交给 Spring 管理

<bean id="userDAO" class="org.mybatis.spring.mapper.MapperFactoryBean">    <property name="sqlSessionFactory" ref="sqlSessionFactory"/>    <property name="mapperInterface" value="com.txw.dao.UserDAO"/></bean>

MapperFactoryBean  就像一个代理,它帮我们创建了 UserDAO 的实现类,这样我们就可以直接在 Service 层注入 UserDAO,而不用关心它的具体实现。

四、Service 层整合

Service 层整合就更简单了,只需要将 DAO 注入到 Service 中即可。

@Servicepublic class UserServiceImpl implements UserService {
@Autowired private UserDAO userDAO;
@Override public List<User> findAll() { return userDAO.findAll(); }}

@Autowired 注解就像一个神奇的胶水,把 UserDAO “粘”到了 UserServiceImpl 中。

五、测试一下

@Testpublic void testFindAll(){    ApplicationContext context = new ClassPathXmlApplicationContext("Spring-myabtis.xml");    UserService userService = context.getBean(UserService.class);    List<User> users = userService.findAll();    for (User user : users) {        System.out.println(user);    }}

运行这段代码,如果能成功打印出数据库中的用户信息,恭喜你,整合成功!

温馨提示

  • MapperLocations 的路径要配置正确,否则 Spring 找不到你的 Mapper 文件。
  • Mapper 接口的命名空间要和 Mapper 文件的 namespace 一致。

总结

Spring 和 Mybatis 的整合,其实就是让 Spring 来管理 Mybatis 的核心对象,从而简化数据库访问操作。记住三步走,轻松搞定整合!桥哥带你轻松入门 Java,下次再见!

夜半探案
每日一案,一案一法,一起学习生活中的法律知识。
 最新文章