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类型)

<!-- 加载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>

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

测试

使用接口(位于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进行测试
在这里插入图片描述

发布了82 篇原创文章 · 获赞 1 · 访问量 1453

猜你喜欢

转载自blog.csdn.net/qq_41891805/article/details/105155666
今日推荐