Spring+Mybatis

发布于 2021-03-26  312 次阅读


一、回忆Mybatis流程

1.编写实体类

2.编写核心配置文件

3.编写接口

4.编写Mapper.xml(使用注解可以不用)

5.测试

二、回忆Spring流程

1.编写Bean类

2.编写核心配置文件

3.通过核心配置文件创建Bean

4.测试

 

Spring整合Mybatis(两种方法)

明显变化:整合之后无Mybatis工具类(Spring替我们生产Factory)

方法一:

步骤:

1.整合数据源

2.sqlSessionFactory

3.sqlSessionTemplate

4.需要给接口加实现类(上图方法一,下图方法二)

方法二:继承SqlSessionDaoSupport类,调用getSqlSession()方法生成sqlSession;

为什么要实现类:

而在Spring中为实现面向对象,需要是实现类来实现(多了一层,Bean中不能直接放XML,本质还是通过XML实现)

5.将自己写的实现类注入到Spring中

6.测试即可

项目结构:注:(需要为对应操作)

  • 1.2为Mybatis接口及Mapper(二者是要实现的Sql操作)
  • 3.配置数据库,SqlSessionFactory和SqlSession
  • 4.接口实现类(在Mybatis中)
  • 5.将接口实现类放入Spring容器
  • 6.测试

主要代码:

spring-dao.xml

 

<?xml version="1.0" encoding="UTF8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--    id:bean的名字,class,实现类的全限定名-->

        <!--    通过无参构造创建对象:<property name="name" value="杨某"/>-->
        <!--    通过下标赋值创建对象<constructor-arg index="0" value="杨哥学Java"></constructor-arg>-->
        <!--    通过类型创建对象(不推荐使用)<constructor-arg type="java.lang.String" value="OKK">-->
        <!--    直接通过参数名来创建对象-->


    <!--    如果添加了别名,可以使用别名来获取对象-->

    <!--    合作开发,导入配置文件-->



<!--    1.使用Spring的数据源替换Mybatis的配置-->
<!--    使用Spring提供的JDBC:org.springframework.jdbc.datasource.DriverManagerDataSource-->
    <bean id = "datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
            <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
            <property name="url" value="jdbc:mysql://localhost:3306/mysql?useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=Asia/Shanghai"/>
            <property name="username" value="root"/>
            <property name="password" value="123456789"/>
    </bean>

<!--    2.SqlSessionFactory-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="datasource"/>
<!--    绑定mybatis配置-->
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
        <property name="mapperLocations" value="classpath:com/yang/mapper/UserMapper.xml"/>
    </bean>

<!--    3.只能使用构造器注入SqlSessionFactory,因为它没有Set方法-->
    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg index="0" ref="sqlSessionFactory"/>
    </bean>

</beans>


sqlSessionTemple使用方法:
1.通过org.mybatis.spring.SqlSessionTemplate生成sqlSession
2.通过唯一的构造方法,注入sqlSessionFactory
3.实现:创建实现类,做一件事情,将sqlSession私有,通过实现类注入以支持业务层调用



 


她喜欢所以就做咯