Spring集成MyBatis

目录大纲         笔记出处:哔哩哔哩视频学习 


        Spring通过IOC技术,能集成很多的框架,是Spring的一个优势,让开发人员使用其他框架更加方便。Spring像插线板一样,MyBatis框架是插头,可以容易的组合到一起。

一、MyBatis 与 Spring 如何整合?

使用 MyBatis,需创建  MyBatis 框架中的某些对象,使用这些对象,就能使用 MyBatis提供的功能

1、Dao接口的代理对象

        定义一个接口后,需要实现它的代理对象,使用SqlSession.getMapper(StudentDao.class),得到Dao的代理对象

2、SqlSessionFactory

        创建SqlSessionFactory对象,才能使用openSession()得到SqlSession对象

3、数据源DataSource

        创建连接数据库的数据源,使用连接池对象代替mybatis自己的PooledDataSource

二、MyBatis 与 Spring 整合步骤

1使用MySQL数据库,创建学生表student,进行测试
2创建Maven项目:spring-mybatis
3

加入Maven依赖:Spring依赖,MyBatis依赖,MySQL驱动,junit依赖,MyBatis-Spring依赖,Spring事务依赖

4创建实体类Student,运用lombok创建get和set
5创建Dao接口和Mapper文件写SQL语句
6写MyBatis的主配置文件:mybatis.xml
7创建Service接口和它的接口实现类
8

创建Spring的配置文件

1)声明数据源DataSource,使用的阿里的Druid连接池

2)声明SqlSessionFactoryBean类,在这个类内部创建的是SqlSessionFactory对象

3)声明MapperScannerConfiguration类,在内部创建Dao代理对象。放在Spring容器中

4)声明Service对象,把 3)的Dao赋值给Service属性

三、MyBatis 与 Spring 整合实现

1、MyQL建student表

2、创建Maven项目

3、pom文件配置

<dependencies>
    <!--lomok依赖-->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.12</version>
        <scope>provided</scope>
    </dependency>
    <!--单一测试依赖-->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
    </dependency>
    <!--Spring 依赖-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.2.5.RELEASE</version>
    </dependency>
    <!--Spring事务依赖-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>5.2.5.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>5.2.5.RELEASE</version>
    </dependency>
    <!--MyBatis依赖-->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.1</version>
    </dependency>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>1.3.1</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.9</version>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.1.12</version>
    </dependency>
</dependencies>
<build>
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>true</filtering>
        </resource>
    </resources>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

4、定义实体类 Student

@Data
public class Student {
    private Integer id ;
    private String name ;
    private Integer age ;
}

5、 定义Dao接口和Mapper文件

1)StudentDao接口 

public interface StudentDao {
    // 新增一条数据
    int insertStudent(Student student);
    // 查询所有数据
    List<Student> selectStudents();
}

2)定义映射文件StudentDao.xml

在 Dao 接口的包中创建 MyBatis 的映射文件 Mapper,命名与接口名相同,本例为StudentDao.xml。 Mapper中的 namespace 取值也为 Dao 接口的全限定性名
注意:要将Mapper文件的Dao接口放在同一包下
<?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">
<!--注意 namespace 后面 跟自己的包路径-->
<mapper namespace="com.dgs.dao.StudentDao">
    <insert id="insertStudent">
        insert into student (name,age)
        values (#{name},#{age});
    </insert>
    <select id="selectStudents" resultType="com.dgs.entity.Student">
        select name ,age from student
    </select>
</mapper>

6、编写MyBatis的主配置文件:mybatis.xml

在 resources根目录下定义 MyBatis 的主配置文件,命名为 mybatis.xml。这里有两点需要注意:
(1)主配置文件中不再需要数据源的配置了。因为数据源要交给 Spring 容器来管理了。
(2)这里对 mapper 映射文件的注册,使用<package/>标签,即只需给出mapper 映射文件所在的包即可。因为 mapper 的名称与 Dao 接口名相同,可以使用这种简单注册方式。这种方式的好处是,若有多个映射文件,这里的配置也是不用改变的。当然,也可使用原来的<resource/>标签方式。

<?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>
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>
    <!--别名-->
    <typeAliases>
        <package name="com.dgs.entity"/>
    </typeAliases>
    <!-- 指定其他mapper文件的位置-->
    <mappers>
        <package name="com.dgs.dao"/>
    </mappers>
</configuration>

7、定义Service接口和实现类

1)创建StudentService接口:

public interface StudentService {
    // 新增一条数据
    int insertStudent(Student student);
    // 查询所有数据
    List<Student> selectStudents();
}

2)创建StudentServiceImpl接口实现类

@Service
public class StudentServiceImpl implements StudentService {
    @Resource
    private StudentDao studentDao;
    // 新增一条数据
    @Override
    public int insertStudent(Student student) {
        return  studentDao.insertStudent(student);
    }
    // 查询所有数据
    @Override
    public List<Student> selectStudents() {
        return studentDao.selectStudents();
    }
}

8、创建Spring的配置文件

1)数据源的配置

使用 JDBC 模板,首先需要配置好数据源,数据源直接以 Bean 的形式配置在 Spring 配置文件中。根据数据源的不同,其配置方式不同。
Spring 配置文件:使用Druid连接池

 2)注册SqlSessionFactoryBean

3)定义Mapper扫描配置器MapperScannerConfigurer

 

 4)包扫描service,注入接口

 5)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: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 https://www.springframework.org/schema/context/spring-context.xsd">

    <!--声明数据源-->
    <bean id="myDataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
        <property name="url" value="jdbc:mysql://localhost:3306/dgs_study" />
        <property name="username" value="root" />
        <property name="password" value="" />
    </bean>

    <!--声明SqlSessionFactory-->
    <bean  id="factory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="myDataSource" />
        <property name="configLocation" value="classpath:mybatis.xml" />
    </bean>

    <!--声明MapperScannerConfiguration-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="sqlSessionFactoryBeanName" value="factory"/>
        <property name="basePackage" value="com.dgs.dao"/>
    </bean>

    <context:component-scan base-package="com.dgs.service" />
    
</beans>

9、Spring和MyBatis整合测试

public class AppTest {
    @Test
    public void test() {
        String config = "applicationContext.xml";
        ApplicationContext ctx = new ClassPathXmlApplicationContext(config);
        String[] names = ctx.getBeanDefinitionNames();
        for (String name : names) {
            System.out.println(name);
        }
        StudentService bean = (StudentService)ctx.getBean("studentServiceImpl");
        int i = bean.insertStudent(new Student());
        System.out.println(i);
        List<Student> students = bean.selectStudents();
        System.out.println(students);
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值