Spring-mybatis整合配置

1、mybatis单独配置

原来我们使用的mybatis配置

<?xml version="1.0" encoding="utf8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--configuration-->
<configuration>
    <!--引入外部配置文件  优先使用外部文件配置-->
    <properties resource="db.properties"></properties>
    
    <settings>
            <!--标准工厂日志-->
        <setting name="logImpl" value="STDOUT_LOGGING"/>
            <!--缓存的默认开启-->
        <setting name="cacheEnabled" value="true"/>
    </settings>
    <!--取别名-->
    <typeAliases>
        <typeAlias type="com.dao.BlogMapper" alias="BlogMapper"/>
        <typeAlias type="com.pojo.Blog" alias="Blog"/>
    </typeAliases>

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    
    <!--注册mapper-->
    <mappers>
        <mapper resource="com/dao/BlogMapper.xml"/>
    </mappers>

</configuration>

Spring-mybatis整合

在Spring中,我们单独的创建一个xml配置文件来配置mybatis和sqlSessionFactory

这样可以减少我们在java类中的代码量

<?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">
    
    <!--DataSource:使用Spring的数据源替换Mybatis的配置
     使用Spring提供的jdbc-->
    <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/mybatis?useSSL=false&amp;
        useUnicode=true&amp;
        characterEncoding=UTF-8&amp;
        serverTimezone=GMT"/>
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
    </bean>

    <!--原来我们需要配置一个util类来实现mybatis的使用现在可以直接在xml配置-->
    <!--sqlSessionFactory-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <!--绑定Mybatis配置文件(可以把全部配置文件写着当前xml中,但不推荐)-->
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
        <!--注册mapper-->
        <property name="mapperLocations" value="classpath:com/dao/*.xml"/>
    </bean>
    <!--注入SqlSessionTemplate(与sqlSessionFactory作用相同)-->
    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
        <!--只能使用构造器方法注入sqlSessionFactory,因为他没有set方法-->
        <constructor-arg index="0" ref="sqlSessionFactory"/>
    </bean>
</beans>

mybatis的xml配置文件一般用于配置别名,和setting

简化后的xml:

<?xml version="1.0" encoding="UTF8" ?>
<!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"/>-->
        <setting name="logImpl" value="STDOUT_LOGGING"/>
        <!--缓存的默认开启-->
        <setting name="cacheEnabled" value="true"/>
    </settings>

    <typeAliases>
        <!--pojo包下的类可以直接使用当前类名(使用别名时首字母大小写都行)使用-->
        <package name="com.pojo"/>
    </typeAliases>

</configuration>

然后把Spring-dao导入主配置文件applicationContext,这样做的好处是把三层架构中每层分开单独配置

使用实现类UserMapper实现

package com.dao;

import com.pojo.User;
import org.mybatis.spring.SqlSessionTemplate;

import java.util.List;

/**
 * @Auther: OX
 * @Date: 2021/6/6 23:26
 * @Description:
 */
public class UserMapperImpl implements UserMapper{

    //我们的所有操作,都使用sqlSession来执行,在原来,现在都使用SqlSessionTemplate

    private SqlSessionTemplate sessionTemplate;

    public void setSession(SqlSessionTemplate sessionTemplate) {
        this.sessionTemplate = sessionTemplate;
    }

    @Override
    public List<User> selectUser() {
        UserMapper mapper = sessionTemplate.getMapper(UserMapper.class);
        return mapper.selectUser();
}
}

这样在controller层直接调用即可。

    @Test
    public void Test(){
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserMapper userMapper = context.getBean(    "userMapper", UserMapper.class);
        List<User> users = userMapper.selectUser();
        for (User user : users) {
            System.out.println(user);
        }

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值