• Spring整合Mybatis


    一、基于XML

      实体类

    package cn.spring.entity;
    
    import java.io.Serializable;
    
    public class Bank implements Serializable {
        private String card_code;       //卡号
        private String user_name;       //所属人姓名
        private double card_balance;    //卡内余额
    
        public String getCard_code() {
            return card_code;
        }
    
        public void setCard_code(String card_code) {
            this.card_code = card_code;
        }
    
        public String getUser_name() {
            return user_name;
        }
    
        public void setUser_name(String user_name) {
            this.user_name = user_name;
        }
    
        public double getCard_balance() {
            return card_balance;
        }
    
        public void setCard_balance(double card_balance) {
            this.card_balance = card_balance;
        }
    }

      Dao层接口和XML配置文件

    Dao层接口
    @Repository
    public interface IBankDao {
        public List<Bank> getAllBank();
    }
    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.spring.dao.IBankDao">
        <select id="getAllBank" resultType="Bank">
            select * from bank
        </select>
    </mapper>

      Service层接口和实现类

    Service层接口
    public interface IBankService {
        public List<Bank> getAllBank();
    }
    实现类public class IBankServiceImpl implements IBankService {
        @Resource
        private IBankDao iBankDao;
        @Override
        public List<Bank> getAllBank() {
            return iBankDao.getAllBank();
        }
    
        public IBankDao getiBankDao() {
            return iBankDao;
        }
    
        public void setiBankDao(IBankDao iBankDao) {
            this.iBankDao = iBankDao;
        }
    }

      applicationContext.xml大配置文件

    <!--加载配置文件-->
        <context:property-placeholder location="classpath:jdbc.properties"/>
        <!--配置数据源-->
        <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"/>
            <!--加载Mybatis配置文件-->
            <property name="configLocation" value="classpath:mybatis-config.xml"/>
        </bean>
        <!--扫描Dao层,省略代码-->
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="cn.spring.dao"/>
        </bean>
        <!--注入Dao层-->
        <bean id="iBankDao" class="org.mybatis.spring.mapper.MapperFactoryBean">
            <property name="mapperInterface" value="cn.spring.dao.IBankDao"/>
            <property name="sqlSessionFactory" ref="sqlSessionFactoryBean"/>
        </bean>
        <!--Service层-->
        <bean id="iBankService" class="cn.spring.service.impl.IBankServiceImpl">
            <property name="iBankDao" ref="iBankDao"/>
        </bean>

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

      测试类

    public class SpringMybaitsTest {
        public static void main(String[] args) {
            ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
            IBankService iBankService = (IBankService)ctx.getBean("iBankService");
            
            List<Bank> allBank = iBankService.getAllBank();
            for(Bank bank:allBank){
                System.out.println(bank.getUser_name());
            }
        }
    }

    二、基于注解配置

      修改上面案例,使用注解注入Dao层

    /**
     * Dao层接口
     */
    @Repository
    public interface IBankDao {
        public List<Bank> getAllBank();
    }

      使用注解注入Service层,并且使用注解调用Dao层对象

    @Service("iBankService")
    public class IBankServiceImpl implements IBankService {
        @Resource
        private IBankDao iBankDao;
        @Override
        public List<Bank> getAllBank() {
            return iBankDao.getAllBank();
        }
    }

      修改applicationContext.xml大配置文件,开启注解扫描

    <!--扫描注解-->
        <context:component-scan base-package="cn.spring"/>
        <!--加载配置文件-->
        <context:property-placeholder location="classpath:jdbc.properties"/>
        <!--配置数据源-->
        <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"/>
            <!--加载Mybatis配置文件-->
            <property name="configLocation" value="classpath:mybatis-config.xml"/>
        </bean>
        <!--扫描Dao层,省略代码-->
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="cn.spring.dao"/>
        </bean>

    其他的不变  

     

  • 相关阅读:
    20170417成员运算符、身份运算符、布尔运算符
    20170417学习find、replace、abs三个函数
    shell 双中括号 双小括号
    man 命令
    awk 命令-对文本和数据进行处理
    shell-1-day
    shell---0-day
    /etc
    Selenium IDE使用
    python 自动化测试框架 pytest 和unittest 的区别
  • 原文地址:https://www.cnblogs.com/dabrk/p/11797702.html
Copyright © 2020-2023  润新知