zoukankan      html  css  js  c++  java
  • spring整合myBatis

    一、简介

    Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

    两个重要模块:Spring 面向方面编程(AOP)和控制反转 (IOC) 容器。

    控制反转模式(也称作依赖性介入)的基本概念是:不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。

    容器 (在 Spring 框架中是 IOC 容器) 负责将这些联系在一起。在典型的 IOC 场景中,容器创建了所有对象,并设置必要的属性将它们连接在一起,决定什么时间调用方法。

    MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及
    结果集的检索。
    MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java
    对象)映射成数据库中的记录。
        将创建SqlsessionFactory交给Spring。

    二.实例

    引入jar包:

     <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis-spring</artifactId>
          <version>1.2.0</version>
        </dependency>
    

      

    1.创建实体类

    package cn.happy.pojo;
    
    public class Topic {
        private Integer tid;
        private String  tname;
    
        public Integer getTid() {
            return tid;
        }
    
        public void setTid(Integer tid) {
            this.tid = tid;
        }
    
        public String getTname() {
            return tname;
        }
    
        public void setTname(String tname) {
            this.tname = tname;
        }
    }
    

    2.创建dao层

    public interface ITopicDao {
        /*
        * 添加主题的方法
        * */
        public int addTopic(Topic topic);
    

    3.创建ITopicDao.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="cn.happy.dao.ITopicDao">
       <insert id="addTopic" >
           insert into topic (tname) values (#{tname});
       </insert>
    
    </mapper>
    

    4.创建service层和他的实现类

    public interface ITopicService {
        /*
    * 添加主题的方法
    * */
        public int addTopic(Topic topic);
    
    
    }
    

     ITopicServiceImpl

    public class TopicServiceImpl implements ITopicService {
        ITopicDao dao;
    
        public int addTopic(Topic topic) {
            return dao.addTopic(topic);
        }
    
        public ITopicDao getDao() {
            return dao;
        }
    
        public void setDao(ITopicDao dao) {
            this.dao = dao;
        }
    }
    

    5.创建配置文件

    01.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">
    <!--通过这个配置文件,完成mybatis与数据库的连接-->
    <configuration>
        <!-- 引入jdbc.properties-->
       <!-- <properties resource="jdbc.properties"/>-->
    
        <typeAliases>
            <package name="cn.happy.pojo"></package>
        </typeAliases>
    
        <mappers>
            <package name="cn.happy.dao"></package>
        </mappers>
    </configuration>
    

    02.jdbc.properties

    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/newssystem
    jdbc.username=root
    

    03.spring的配置文件

    采用MapperScannerConfigurer,它将会查找类路径下的映射器并自动将它们创建成MapperFactoryBean。

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:aop="http://www.springframework.org/schema/aop"
           xmlns:p="http://www.springframework.org/schema/p"
           xmlns:tx="http://www.springframework.org/schema/tx"
           xmlns:context="http://www.springframework.org/schema/context"
           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
             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
    ">
        <!--1.识别jdbc.properties文件-->
           <context:property-placeholder location="jdbc.properties"></context:property-placeholder>
    
        <!--工厂配置-->
        <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource"></property>
            <!--大配置文件-->
            <property name="configLocation" value="classpath:MyBatis-config.xml"></property>
        </bean>
        <!--配置数据源-->
        <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
            <property name="driverClassName" value="${jdbc.driver}"></property>
            <property name="url" value="${jdbc.url}"></property>
            <property name="username" value="${jdbc.username}"></property>
        </bean>
    
    
        <!--dao(只需提供接口不需提供实现类 ) 映射文件的扫描器可以动态的在内存中构建接口实现类,代理对象-->
        <bean  class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="cn.happy.dao"></property>
            <property name="sqlSessionFactoryBeanName" value="sessionFactory"></property>
        </bean>
    
        <!--service-->
        <bean id="topicService" class="cn.happy.service.impl.TopicServiceImpl">
            <property name="dao" ref="ITopicDao"></property>
        </bean>
        <!--事物管理器-->
        <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource"></property>
        </bean>
        <!--AspectJ 配置事物-->
        <tx:advice id="txAdvice" transaction-manager="transactionManager">
            <tx:attributes>
                <tx:method name="add*" isolation="DEFAULT" propagation="REQUIRED" rollback-for="StockException"/>
            </tx:attributes>
        </tx:advice>
    
        <aop:config>
            <!--定义切点-->
            <aop:pointcut id="mypoint" expression="execution(* *..service.*.*(..))"></aop:pointcut>
            <!--配置顾问-->
            <aop:advisor advice-ref="txAdvice" pointcut-ref="mypoint"></aop:advisor>
        </aop:config>
    
    
    
    
    </beans>
    

    6.创建测试类

    public class test01 {
        @Test
        public void testAdd() {
            ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
            ITopicService topicService = (ITopicService)ctx.getBean("topicService");
            Topic topic = new Topic();
            topic.setTname("白夜行");
            topicService.addTopic(topic);
    
        }
    }
    

      

      

      

     

      

      

      

      

      

  • 相关阅读:
    摄影基础知识(二)
    std::bind
    摄影网站汇总
    std::function
    常用路径说明
    摄影基础知识(一)
    JavaScript 箭头函数:适用与不适用场景
    软帝学院:Java实现的5大排序算法
    软帝学院:用Java编写计算器,代码展示!
    windows环境下运行java的脚本
  • 原文地址:https://www.cnblogs.com/cn-930621/p/7704769.html
Copyright © 2011-2022 走看看