欢迎光临散文网 会员登陆 & 注册

Spring框架入门必备教程-Spring集成MyBatis

2021-03-16 13:43 作者:动力节点小王本王  | 我要投稿



Spring 集成 MyBatis

将 MyBatis 与 Spring 进行整合,主要解决的问题就是将SqlSessionFactory 对象交由 Spring 来管理。所以,该整合,只需要将SqlSessionFactory 的对象生成器 SqlSessionFactoryBean 注册在 Spring 容器中,再将其注入给Dao 的实现类即可完成整合。

实现 Spring 与MyBatis 的整合常用的方式:扫描的Mapper 动态代理Spring 像插线板一样,mybatis 框架是插头,可以容易的组合到一起。插线板spring 插上mybatis,两个框架就是一个整体。

MySQL 创建数据库 springdb,新建表 Student

maven 依赖 pom.xml

插件:

定义实体类 Student

定义StudentDao 接口

定义映射文件mapper

Dao 接口的包中创建 MyBatis 的映射文件 mapper,命名与接口名相同,本例为StudentDao.xml。mapper 中的 namespace 取值也为Dao 接口的全限定性名。

定义Service 接口和实现类

接口定义:

实现类定义:

定义MyBatis 主配置文件

 src 下定义 MyBatis 的主配置文件,命名为 mybatis.xml。这里有两点需要注意:

(1) 主配置文件中不再需要数据源的配置了。因为数据源要交给 Spring 容器来管理了。

(2) 这里对mapper 映射文件的注册,使用<package/>标签,即只需给出mapper 映射文件所在的包即可。因为mapper 的名称与Dao 接口名相同, 可以使用这种简单注册方式。这种方式的好处是,若有多个映射文件,这里的配置也是不用改变的。当然,也可使用原来的<resource/>标签方式。

修改Spring 配置文件

(1) 数据源的配置(掌握)

 使用JDBC 模板,首先需要配置好数据源,数据源直接以 Bean 的形式配置在 Spring 配置文件中。根据数据源的不同,其配置方式不同:

Druid 数据源DruidDataSource

Druid 是阿里的开源数据库连接池。Java 语言中最好的数据库连接池。Druid 能够提供强大的监控和扩展功能。Druid 与其他数据库连接池的最大区别是提供数据库的

 官网:https://github.com/alibaba/druid

使用地址:https://github.com/alibaba/druid/wiki/常见问题

配置连接池:

Spring 配置文件:

(2) 从属性文件读取数据库连接信息

为了便于维护,可以将数据库连接信息写入到属性文件中,使 Spring 配置文件从中读取数据。

属性文件名称自定义,但一般都是放在src 下。

Spring 配置文件从属性文件中读取数据时,需要在<property/>的value 属性中使用${ },将在属性文件中定义的key 括起来,以引用指定属性的值。


该属性文件若要被 Spring 配置文件读取,其必须在配置文件中进行注册。使用<context>标签。

<context:property-placeholder/>方式(掌握)

该方式要求在 Spring 配置文件头部加入spring-context.xsd 约束文件

<context:property-placeholder/>标签中有一个属性 location,用于指定属性文件的位置。

(3) 注册 SqlSessionFactoryBean

(4) 定义 Mapper 扫描配置器 MapperScannerConfigurer

 Mapper 扫描配置器 MapperScannerConfigurer 会自动生成指定的基本包中mapper 的代理对象。该 Bean 无需设置 id 属性。basePackage 使用分号或逗号设置多个包。

Service 注入接口名

 Service 注入 Mapper 代理对象时需要注意,由于通过 Mapper 扫描配置器 MapperScannerConfigurer 生成的 Mapper 代理对象没有名称,所以在向 Service 注入 Mapper 代理时,无法通过名称注入。但可通过接口的简单类名注入,因为生成的是这个Dao 接口的对象。

Spring 配置文件全部配置

最后奉上视频教程👇,视频观看效果更佳!!走过路过别忘素质三连哦~~

Spring框架入门必备教程-Spring集成MyBatis的评论 (共 条)

分享到微博请遵守国家法律