Spring框架整合MyBatis框架

依赖包

①Spring核心包
②Mybatis包
③Spring中Data Access/intergration层中的JDBC包
④Spring中spring-tx包
⑤Spring中aop包
⑤mybatis-spring包
所有包:
在这里插入图片描述

实现步骤

spring联合mybatis的实质是将mybatis的配置文件信息加载到了一些特殊的类中,再将这些类交给Spring容器进行管理

①连接数据库
使用<bean>加载数据源封装类:org.springframework.jdbc.datasource.DriverManagerDataSource
使用<property>设置属性:driverClassName、url、username、password

<!-- 加载数据库源 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
     	<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>
     	<property name="url" value="jdbc:mysql://localhost:3306/kfc?serverTimezone = GMT"></property>
     	<property name="username" value="root"></property>
     	<property name="password" value="*******"></property>
</bean>

②产生SqlSessionFactory对象
使用<bean>加载工厂类:org.mybatis.spring.SqlSessionFactoryBean
使用<property>设置属性:
dataSource,加载信息,需引用上一步中的对象,即bean id
typeAliasesPackage,可给指定的包起别名(简化sql类型)
configLocation,加载本地的myabtis配置文件(可配置插件)

<!-- 加载SqlSessionFactory --> 
<bean id="factory" class="org.mybatis.spring.SqlSessionFactoryBean">
     	<property name="dataSource" ref="dataSource"></property>
     	<property name="typeAliasesPackage" value="com.mfqh.pojo"></property>
</bean>

③扫描mapper(此处可以不设置id,因为不会被外部引用)
使用<bean>加载:org.mybatis.spring.mapper.MapperScannerConfigurer
使用<property>设置属性:
basePackage,值为需要扫描的mapper包名
sqlSessionFactory,引用上一步的factory id,在工厂中加载mapper
Ps:
Ⅰ、若使用文件(properties)加载连接信息且使用自动注入,需使用属性:sqlSessionFactoryBeanName
因为自动注入级别较高,并不会加载到文件内容
Ⅱ、该步在加载时会直接创建好接口绑定的对象,对象名(类名首字母小写)

<!-- 扫描mapper,不会被引用,并不需要id-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
     	<property name="basePackage" value="com.mfqh.mapper"></property>
     	<property name="sqlSessionFactory" ref="factory"></property>
</bean>

查看容器内部信息
在这里插入图片描述

有关资源释放

在非WEB应用中,若手动加载Spring.xml配置文件,需使用AbstractApplicationContext来接收容器对象,因为ApplicationContext并没有提供容器的关闭方法,则会造成资源的浪费(数据库连接不能释放等)

测试

使用接口(位于com.mfqh.mapper下)绑定:

public interface GoodsMapper {
 /**
  * 接口绑定,查询所有货物信息
  * @return 货物信息
  */
 public List<Goods> selAll();
}

和mapper.xml搭配使用:

<mapper namespace="com.mfqh.mapper.GoodsMapper">
  	<select id="selAll" resultType="Goods">
   		SELECT * FROM goods;
  	</select>
</mapper>

在Service中设置私有属性 GoodsMapper对象(注入),交给容器管理

<bean id="queryService" class="com.mfqh.service.QueryService">
     <property name="selGoods" ref="goodsMapper"></property>
</bean>
public class QueryService {
 	//查询对象
 	private GoodsMapper selGoods; 
 	//get/set方法
 	puvlic void goodsService(){ 
  		List<Goods> goods = selGoods.selAll();
  		if(goods == null) {
   			System.out.println("未查询到结果");
  		}else {
   			System.out.println("结果为:");
   			for (Goods good: goods) {
    				System.out.println(good.getName()+"  "+good.getId());
   			}
  		}
 	}
}

在Servlet进行测试
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值