Spring复习笔记:Spring整合Mybatis
Spring整合Mybatis传统DAO方式的开发整合mapper接口方式的开发整合基于MapperFactoryBean的开发整合基于MapperScannerConfigurer的开发整合整合步骤传统DAO方式的开发整合可以使用mybatis-spring包中提供的SqlSessionTemplate类或SqlSessionDaoSupport类来实现SqlSessionTemplate: 是
·
Spring整合Mybatis
传统DAO方式的开发整合
- 可以使用mybatis-spring包中提供的SqlSessionTemplate类或SqlSessionDaoSupport类来实现
- SqlSessionTemplate: 是核心类 负责管理Mybatis的SqlSession,调用Mybatis的SQL方法
- SqlSessionDaoSupport: 是一个抽象支持类,主要是作为Dao的基类来使用,可以通过SqlSessionDaoSupport类的getSqlSession()方法来获得所需的SqlSession.
mapper接口方式的开发整合
mapper代理开发的规范:
- mapper接口的名称和对应mapper.xml映射的名称必须一致
- mapper.xml的namespace与mapper接口的类路径相同
- mapper接口中的方法名和mapper.xml中定义的每个执行语句的id相同
- mapper接口中方法的输入和输出类型和mapper.xml定义的相同
基于MapperFactoryBean的开发整合
MapperFactoryBean是一个用于根据Mapper接口生成Mapper对象的类
该类常用参数如下:
- mapperInterface: 用于指定接口
- SqlSessionFactory: 用于指定SqlSessionFactory
- SqlSessionTemplate: 用于指定SqlSessionTemplate. (如果和SqlSessionFactory同时设定,只会启动SqlSessionTemplate)
<!-- Mapper代理开发(基于MapperFactoryBean) -->
<bean id=" " class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface" value="接口类路径" />
<property name="sqlSessionFactory" ref=" "/>
</bean>
基于MapperScannerConfigurer的开发整合
自动扫描 (最常用)
MapperScannerConfigurer类的属性:
- basePackage: 指定映射接口文件所在的包路径(若有多个路径,使用分号或逗号作为分隔符)
- annotationClass: 指定要扫描的注解名称 (一般不用)
- sqlSessionFactoryBeanName:指定Spring中定义的SqlSessionFactory的Bean名称
- sqlSessionTemplateBeanName:指定Spring中定义的SqlSessionTemplate的Bean名称
<!-- 基于MapperScannerConfigurer -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="包路径" />
</bean>
整合步骤
- 导入相关jar包
<dependencies>
<!-- Spring核心 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
<!-- MyBatis核心 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<!-- MySQL JDBC驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.40</version>
</dependency>
<!-- JUnit单元测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- Druid数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
<!-- Spring整合MyBatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.2</version>
</dependency>
<!-- Spring整合ORM框架 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
<!-- slf4j日志框架(Spring使用) -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
</dependency>
<!-- PageHelper分页插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.2.1</version>
</dependency>
</dependencies>
- 编写配置文件
spring.xml
<?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="classpath:jdbc-config.properties"/>
<!-- 配置Druid数据源的Bean -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<!-- 配置SessionFactory的Bean 并注入dataSource-->
<bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 注入数据源 -->
<property name="dataSource" ref="dataSource"/>
<!-- 指定MyBatis配置文件的位置 -->
<property name="configLocation" value="classpath:mybatis.xml"/>
<!-- 给实体类起别名 -->
<property name="typeAliasesPackage" value="com.neuedu.entity"/>
<!-- 配置MyBatis的插件 -->
<property name="plugins">
<array>
<!-- PageHelper分页插件 -->
<bean id="pageHelper" class="com.github.pagehelper.PageHelper">
<property name="properties">
<props>
<prop key="dialect">mysql</prop>
</props>
</property>
</bean>
</array>
</property>
</bean>
<!-- 配置mapper接口的扫描器,将Mapper接口的实现类自动注入到IoC容器中
实现类Bean的名称默认为接口类名的首字母小写 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- basePackage属性指定自动扫描mapper接口所在的包 -->
<property name="basePackage" value="com.neuedu.mapper"/>
</bean>
</beans>
mybatis/configuration.xml
<?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>
<!-- 使用jdbc的getGeneratedKeys获取数据库自增主键值 -->
<setting name="useGeneratedKeys" value="true" />
<!-- 使用列标签替换列名 默认:true -->
<setting name="useColumnLabel" value="true" />
<!-- 开启驼峰命名转换:Table{create_time} -> Entity{createTime} -->
<setting name="mapUnderscoreToCamelCase" value="true" />
<!-- 打印查询语句 -->
<setting name="logImpl" value="STDOUT_LOGGING" />
</settings>
</configuration>
昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链
更多推荐
所有评论(0)