Spring-Mybatis的整合

Spring整合mybatis配置

  Mybatis是ibatis的升级版,是一个基于java的持久层框架。Mybatis是支持普通SQL查询,存储过程和高级映射的优秀的持久层框架,

  Mybatis 消除了几乎所有JDBC代码和参数的手工设置以及结果集的检索。

  MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

  相对Hibernate和Apache OJB等“一站式”ORM解决方案而言,Mybatis 是一种“半自动化”的ORM实现

 

一.创建Maven工程(xml配置方式)

    在pom.xml中添加jar包依赖:

 

<dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>5.1.5.RELEASE</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>4.3.18.RELEASE</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjweaver</artifactId>
      <version>1.9.4</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.1.5.RELEASE</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.38</version>
    </dependency>

    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.6</version>
    </dependency>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>
    <!--引入需要的ehcache插件-->
    <dependency>
      <groupId>net.sf.ehcache</groupId>
      <artifactId>ehcache</artifactId>
      <version>1.2.3</version>
    </dependency>
    <!--mybatis整合ehcache的jar-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-ehcache</artifactId>
      <version>1.0.0</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>1.7.25</version>
    </dependency>

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.7.25</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>1.2</version>
    </dependency>

    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.3.2</version>
    </dependency>
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.1.10</version>
    </dependency>


    <!--阿里的DataSource数据源-->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.1.10</version>
    </dependency>

 

 

 

二.在resources下创建:

  applicationContext.xml文件:

<?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:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"

       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">

    <!--扫描注解-->
    <context:component-scan base-package="cn.springmybatis"/>
    <!--识别到配置文件-->
    <context:property-placeholder location="classpath:jdbc.properties"/>

    <!--支持注解-->
    <!--<tx:annotation-driven/>-->

    <!--配置数据源-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>



    <!--配置SqlSessionFactoryBean-->
    <bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <!--加载Mybatis配置文件-->
        <property name="configLocation" value="classpath:mybatis-config.xml"></property>
    </bean>

    <!--扫描Dao层,省略代码-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="cn.springmybatis.dao"/>
    </bean>

    <!--注入Dao层-->
    <bean id="iBankDao" class="org.mybatis.spring.mapper.MapperFactoryBean">
        <property name="mapperInterface" value="cn.springmybatis.dao.IBankDao"/>
        <property name="sqlSessionFactory" ref="sqlSessionFactoryBean"/>

    </bean>

    <!--Service层-->
    <bean id="iBankService" class="cn.springmybatis.service.impl.IBankServiceImpl">
        <property name="iBankDao" ref="iBankDao"/>

    </bean>



</beans>

 

  jdbc.properties文件:

 

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///mybank?useUniCode=true&characterEncoding=utf-8&useSSL=true
jdbc.username=root
jdbc.password=root

 

 

  mybatis-config.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="cn.springmybatis"/>
    </typeAliases>
    <!--加载小配置文件-->
    <mappers>
        <package name="cn.springmybatis.dao"/>
    </mappers>
</configuration>

 

 

 

三.搭建实体类

  

package cn.springmybatis.entity;

public class IBankCard {

    private String bcard;
    private String bname;
    private Double bmoney;

    public IBankCard() {
    }

    public IBankCard(String bcard, String bname, Double bmoney) {
        this.bcard = bcard;
        this.bname = bname;
        this.bmoney = bmoney;
    }


    public String getBcard() {
        return bcard;
    }

    public void setBcard(String bcard) {
        this.bcard = bcard;
    }

    public String getBname() {
        return bname;
    }

    public void setBname(String bname) {
        this.bname = bname;
    }

    public Double getBmoney() {
        return bmoney;
    }

    public void setBmoney(Double bmoney) {
        this.bmoney = bmoney;
    }

    @Override
    public String toString() {
        return "IBankCard{" +
                "bcard='" + bcard + '\'' +
                ", bname='" + bname + '\'' +
                ", bmoney=" + bmoney +
                '}';
    }
}

 

三.Dao层和Service层

 

  Dao层:

package cn.springmybatis.dao;

import cn.springmybatis.entity.IBankCard;

import java.util.List;

public interface IBankDao {

    public List<IBankCard> getAllCard();

}

  

  IBankDao.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">
<!--小配置根节点 namespace代表命名空间-->
<mapper namespace="cn.springmybatis.dao.IBankDao">
    <select id="getAllCard" resultType="IBankCard">
        select * from bankcard
    </select>
</mapper>

 

  Service层:

package cn.springmybatis.service;

import cn.springmybatis.entity.IBankCard;

import java.util.List;

public interface IBankService {
    public List<IBankCard> getAllCard();

}
package cn.springmybatis.service.impl;

import cn.springmybatis.dao.IBankDao;
import cn.springmybatis.entity.IBankCard;
import cn.springmybatis.service.IBankService;

import javax.annotation.Resource;
import java.util.List;

public class IBankServiceImpl implements IBankService {

    private IBankDao iBankDao;

    public List<IBankCard> getAllCard() {
        return iBankDao.getAllCard();
    }

    public IBankDao getiBankDao() {
        return iBankDao;
    }

    public void setiBankDao(IBankDao iBankDao) {
        this.iBankDao = iBankDao;
    }
}

 

  测试类:  

package cn.spring;

import cn.springmybatis.dao.IBankDao;
import cn.springmybatis.entity.IBankCard;
import cn.springmybatis.service.IBankService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.util.List;

public class SpringMybatisTest {
    public static void main(String[] args) {
        ApplicationContext actx=new ClassPathXmlApplicationContext("applicationContext.xml");

        IBankService iBankService = (IBankService)actx.getBean("iBankService");

        List<IBankCard> allCard = iBankService.getAllCard();


        for (IBankCard card:allCard){
            System.out.println("name++:"+card.getBname());
        }

    }
}

 

  执行结果:

 

 

 

 

注解方式:

  

    注解方式只需要在Dao层加入 @Repository

@Repository
public interface IBankDao {

    public List<IBankCard> getAllCard();

}

 

    在Service层加入@Service("接口名")和

    @Resource
   private IBankDao iBankDao;即可

@Service("iBankService")
public class IBankServiceImpl implements IBankService {

    @Resource
    private IBankDao iBankDao;

    public List<IBankCard> getAllCard() {
        return iBankDao.getAllCard();
    }

}

  

  在application.xml文件中去掉如下代码:

   <!-- &lt;!&ndash;注入Dao层&ndash;&gt;
    <bean id="iBankDao" class="org.mybatis.spring.mapper.MapperFactoryBean">
        <property name="mapperInterface" value="cn.springmybatis.dao.IBankDao"/>
        <property name="sqlSessionFactory" ref="sqlSessionFactoryBean"/>

    </bean>

    &lt;!&ndash;Service层&ndash;&gt;
    <bean id="iBankService" class="cn.springmybatis.service.impl.IBankServiceImpl">
        <property name="iBankDao" ref="iBankDao"/>

    </bean>

-->

 

  测试结果:

 

 

 

 

posted @ 2019-11-05 15:09  败给时光  阅读(148)  评论(0)    收藏  举报