Spring入门学习(三、基于映射整合Mybatis)

SM的整合

我们前面学过Mybatis,那么现在如果讲Mybatis和Spring联合起来一起使用,效果会怎么样呢?我们又有那些东西需要在Spring中配置呢?Spring又能帮我们管理那些东西呢?

整合思路

  • Spring管理SqlSessionFactory、bean
  • Spring对于数据操作的支持:从Spring管理的factory中获取SqlSession
  • SqlSession的数据操作依赖于:Mybatis
  • 有以下bean需要管理
    • DataSource
    • SqlSessionFactory
    • Dao

整合步骤

  • 在Spring中配置DataSource以及SqlSessionFactory
  • Mybatis的配置文件中映射Mapper
  • Spring中配置dao实现类的bean
  • 编写dao的实现类
  • 测试代码

代码结构图

在这里插入图片描述

Spring配置文件

<?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:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:task="http://www.springframework.org/schema/task"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.1.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
        http://www.springframework.org/schema/task
        http://www.springframework.org/schema/task/spring-task-3.1.xsd">
        
   <context:property-placeholder location="classpath:db.properties"/>
   
   <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
   		<property name="driverClassName" value="${driver}"></property>
   		<property name="password" value="${password}"></property>
   		<property name="url" value="${url}"></property>
   		<property name="username" value="${username}"></property>
   		<property name="maxActive" value="10"></property>
   		<property name="maxIdle" value="5"></property>
   </bean>
   
   <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
   		<property name="dataSource" ref="dataSource"></property>
   		<property name="configLocation" value="mybatis/MybatisMainCof.xml"></property>
   </bean>
   
   <bean id="userDao" class="dao.impl.UserDaoImpl">
   		<property name="sqlSessionFactory" ref="sessionFactory"></property>
   </bean>
   
</beans>
  • <context:property-placeholder location="classpath:db.properties"/>这一句是导入我们的db.properties也就是我们的数据源的属性文件
  • <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> 这一句就是配置我们的数据源了,记住这个class最好复制粘贴,避免打错
    • <property name="driverClassName" value="${driver}"></property>这里的driver可不是叫driver而是叫driverClassName
    • 一切名字都以jar包为准,不然你到时候找不到错误的
  • <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">这一句就很简单了,就是配置SqlSessionFactoryBean
    • <property name="configLocation" value="mybatis/MybatisMainCof.xml"></property>这里就需要映射我们的Mapper文件了
  • <bean id="userDao" class="dao.impl.UserDaoImpl">这个就是单纯的配置一个bean而已
    • 因为这个bean需要操作数据,所以需要 sessionFactory,所以还需要配置<property name="sqlSessionFactory" ref="sessionFactory"></property>
  • 这个就是Spring的配置了,是不是觉得很简单,就那么几行

Mybatis配置

<?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>

    <mappers>
    	<mapper resource="mapper/UserMapper.xml"/>
    </mappers>
</configuration>
  • 这里面就什么都不用写了,就只用映射mapper而已

Mapper以及对应的实体类

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="dao.UserDao">	
	
	<select id="findById" parameterType="int" resultType="domain.User">
		select * from tb_user where id=#{id}
	</select>
	
</mapper>


public interface UserDao {
	public User findById(int id);
}

UserDaoImpl

public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao{

	@Override
	public User findById(int id) {
		SqlSession session=this.getSqlSession();
		User user=session.selectOne("dao.UserDao.findById",id);
		return user;
	}
	
}
  • 这里注意一下,我们继承了一个类,而且实现了我们的接口
  • 继承这个类的原因是因为:我们需要通过这个类去找到我们的SqlSessionFactory以便能获取链接

测试类:

public class Text {
	public static void main(String[] args) {
		ApplicationContext ac=new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml");
		UserDao userDao=(UserDao) ac.getBean("userDao");
		User user=userDao.findById(1);
		System.out.println(user);

	}
}
  • 这个测试类就很简单了,加载Spring
  • 获取bean
  • 使用bean
  • 打印

总结

  • 整合Mybatis的关键还是在于Spring的配置,以及dao的bean
  • 以及Dao实现类的一个继承关系
  • 整体思路看过一次代码过后还是很简单
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值