Spring整合Mybatis

Spring整合Mybatis

核心就是配置applicationContext.xml文件

  • 创建maven工程

  • 导入依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.wangjw</groupId>
    <artifactId>Spring-Mybatis</artifactId>
    <version>1.0-SNAPSHOT</version>


    <dependencies>
        <!--Spring-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.9.RELEASE</version>
        </dependency>
        <!--mybatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.5</version>
        </dependency>
        <!--mybatis-spring-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.6</version>
        </dependency>
        <!--spring 整合jdbc-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.2.9.RELEASE</version>
        </dependency>
        <!--Oracle驱动-->
        <dependency>
            <groupId>com.oracle.database.jdbc</groupId>
            <artifactId>ojdbc8</artifactId>
            <version>19.3.0.0</version>
        </dependency>
        <!--aop-->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.9.6</version>
        </dependency>
        <!--使用druid数据源-->
       <!-- <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.1</version>
        </dependency>-->
        <!--junit-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/cn.easyproject/orai18n -->
        <!--解决以下报错
        Caused by: java.sql.SQLException: 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK
        -->
        <dependency>
            <groupId>cn.easyproject</groupId>
            <artifactId>orai18n</artifactId>
            <version>12.1.0.2.0</version>
        </dependency>
    </dependencies>

    <build>
        <!-- 解决静态资源导出问题-->
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>
</project>
  • 创建实体类

      本地数据库找一个简单的表

package com.wangjw.pojo;


public class Xc {
    private String xh;
    private String mc;
    private String id;

    public String getXh() {
        return xh;
    }

    public void setXh(String xh) {
        this.xh = xh;
    }

    public String getMc() {
        return mc;
    }

    public void setMc(String mc) {
        this.mc = mc;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return "Xc{" +
                "xh='" + xh + '\'' +
                ", mc='" + mc + '\'' +
                ", id='" + id + '\'' +
                '}';
    }
}
  • 创建mapper接口和实现类  UserDao、UserDaoImpl 

package com.wangjw.dao;

import com.wangjw.pojo.Xc;

import java.util.List;

public interface UserDao {
    public List<Xc> queryAll();
}


// 接口实现类

package com.wangjw.dao;

import com.wangjw.pojo.Xc;
import org.mybatis.spring.SqlSessionTemplate;

import java.util.List;

public class UserDaoImpl implements UserDao {

    // 所有的操作 都通过sqlSession来操作
    private SqlSessionTemplate sqlSession;

    public void setSessionTemplate(SqlSessionTemplate sqlSession) {
        this.sqlSession = sqlSession;
    }

    public List<Xc> queryAll() {
        return sqlSession.getMapper(UserDao.class).queryAll();
    }
}
  • 创建映射文件  UserDao.xml

<?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="com.wangjw.dao.UserDao">
   <select id="queryAll" resultType="xc">
       select * from xc
   </select>
</mapper>
  • 创建mybatis核心文件  mybatis.xml

<?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>
    <typeAliases>
        <package name="com.wangjw.pojo"/>
    </typeAliases>
</configuration>
  • 创建Spring配置文件applicationContext.xml,整合mybatis

     注意:创建sqlsession的时候,根据源码可知,此处时不能通过set注入sqlSessionFactory的,因为没有set方法。只能通过构造器注入

<?xml version="1.0" encoding="UTF-8"?>
<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
        https://www.springframework.org/schema/beans/spring-beans.xsd">


    <!--配置数据源: 此处可以根据需要选择其他数据库连接池-->

    <bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
        <property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:hmislj"/>
        <property name="username" value="hmislj"/>
        <property name="password" value="hmislj"/>
    </bean>
    <!--如果需要其他连接池,在pom文件中导入对应的依赖即可-->
    <!--<bean id="druid" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="username" value="hmislj"/>
        <property name="password" value="hmislj"/>
        <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
        <property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:hmislj"/>
    </bean>-->
    <!--配置SqlSessionFactory -->
    <bean id="SqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="datasource"/>
        <!--绑定mybatis配置文件-->
        <property name="configLocation" value="classpath:mybatis.xml"/>
        <property name="mapperLocations" value="classpath:com/wangjw/dao/*.xml"/>
    </bean>

    <!--配置sqlsession-->
    <bean id="sqlsession" class="org.mybatis.spring.SqlSessionTemplate">
        <!--通过源码可知: 源码里面没有set方法,所以此处只能通过构造器注入-->
        <constructor-arg index="0" ref="SqlSessionFactory"/>
    </bean>

    <!--注册bean-->
    <bean id="userDao" class="com.wangjw.dao.UserDaoImpl">
        <property name="sessionTemplate" ref="sqlsession"/>
    </bean>
<!--声明式事务-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <constructor-arg ref="datasource" />
    </bean>

    <!--结合AOP实现事务的织入-->
    <!--配置事务通知-->
    <tx:advice id="txadvice" transaction-manager="transactionManager">
        <!--配置事务的传播特性-->
        <!--propagation 默认 REQUIRED-->
        <tx:attributes>
            <tx:method name="*" propagation="REQUIRED"/>
        </tx:attributes>
    </tx:advice>

    <!--配置事务切入-->
    <aop:config>
        <aop:pointcut id="txPointCut" expression="execution(* com.wangjw.dao.*.*(..))"/>
        <aop:advisor advice-ref="txadvice" pointcut-ref="txPointCut"/>
    </aop:config>
</beans>
  • 测试

import com.wangjw.dao.UserDao;
import com.wangjw.pojo.Xc;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.util.List;

public class MyTest {
    @Test
    public void test01(){
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserDao userDao = (UserDao) context.getBean("userDao");
        List<Xc> list = userDao.queryAll();
        for (Xc xc : list) {
            System.out.println(xc);
        }
    }
}


       /** 结果输出:      
        Xc{xh='15', mc='待报废', id='C22868F750FF46059E0E7E40E0639DC4'}
        Xc{xh='02', mc='段修', id='0043E42C2646432FBAA4715E69EE9E17'}
        Xc{xh='03', mc='辅修', id='355715E19E2B437C9F1F4C2C2602F0C5'}
        Xc{xh='04', mc='临修', id='CEE2AF99804E4706B8A8CABD814463B4'}
        Xc{xh='05', mc='轴检', id='BE3CB9ECBBDB481A9AF88E4B51684BA0'}
        Xc{xh='06', mc='事故修', id='897984627E834597BCC7D5F47525C386'}
        Xc{xh='07', mc='返厂修', id='30D73CEB1C8341F6889EF27F67219B5A'}
        Xc{xh='08', mc='入段厂修', id='6FE0375DCC39494F933615E0B0E47327'}
        **/

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值