zoukankan      html  css  js  c++  java
  • 多环境切换&&注解方式&&增删改返回值问题

    1.数据库环境切换(驱动jar)

      a.切换environment(指定实际使用的数据库)

    srcdb.properties

    #oracle
    oracle.driver=oracle.jdbc.OracleDriver
    oracle.url=jdbc:oracle:thin:@127.0.0.1:1521:mldn
    oracle.username=scott
    oracle.password=tiger
    
    #mysql
    mysql.driver=com.mysql.jdbc.Driver
    mysql.url=jdbc:mysql://127.0.0.1:3306/myy
    mysql.username=root
    mysql.password=root

      b. Provider别名

    srcconf.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>
    
        <properties resource="db.properties"/>
        <!--环境配置,连接的数据库-->
        <!--通过environments的default值和environment的id来指定MyBatis运行时的数据库环境  -->
        <environments default="devMysql">
        <!--开发环境(自己的计算机)  -->
            <environment id="devOracle">
               
                <!--事务提交方式:
                      JDBC:利用JDBC方式处理事务(commit rollback close)
                      MANAGED:将事务交由其他组件去托管(spring,jobss)    默认会关闭连接
                      -->
               <!--  <transactionManager type="MANAGED"></transactionManager>
                <property name="closeConnection" value="false"></property> -->
                <transactionManager type="JDBC"/>
                <!--dataSource 指连接源配置,POOLED是JDBC连接对象的数据源连接池的实现-->
                <!--数据源类型;
                    UNPOOLED:传统的JDBC模式(每次访问数据库,均需要打开关闭数据库,但是打开关闭数据库是比较消耗性能的)
                    POOLED:使用数据库连接池
                    JNDI:从tomcat中获取一个内置的数据库连接池(数据库连接池-数据源)
                  -->
                <dataSource type="POOLED">
                   <property name="driver" value="${oracle.driver}"></property>
                    <property name="url" value="${oracle.url}"></property>
                    <property name="username" value="${oracle.username}"></property>
                    <property name="password" value="${oracle.password}"></property>
                </dataSource>
            </environment>
            <!--mysql-->
            <environment id="devMysql">
                <transactionManager type="JDBC"/>
                <dataSource type="POOLED">
                    <property name="driver" value="${mysql.driver}"></property>
                    <property name="url" value="${mysql.url}"></property>
                    <property name="username" value="${mysql.username}"></property>
                    <property name="password" value="${mysql.password}"></property>
                </dataSource>
            </environment>
        </environments>
    
        <!--配置数据库支持类-->
        <databaseIdProvider type="DB_VENDOR">
            <property name="MySQL" value="mysql"/>
            <property name="Oracle" value="oracle"/>
    
        </databaseIdProvider>
    <mappers>
        <!--<mapper resource="org/myy/mapper/studentMapper.xml"/>-->
        <!--<mapper class="org.myy.mapper.StudentMapper"/>-->
        <!--以下语句可以将com.myy.mapper包中的注解接口和xml全部一次性引入-->
        <package name="org.myy.mapper"/>
    </mappers>
    
    </configuration>

      c.写不同数据库的SQL语句

      d.在mapper.xml中配置databaseId="Provider别名"

    如果mapper.xml的sql标签仅有一个不带databaseId的标签,则该标签会自动适应当前数据库

    如果既有不带databaseId的标签,又有带databaseId的标签,则程序会优先使用带databaseId的标签

    2.注解方式

      推荐使用xml

      a.将sql语句写在接口的方法上

    srcorgmyymapperStudentMapper.java

        @Select("select * from student1 where stuno=#{stuno}")
        Student queryStudentByStuno(int stuno);

      b.将接口的全类名写入<mapper>,让mybits知道sql语句此时是存储在接口中

    srcconf.xml

    <mappers>
        <mapper class="org.myy.mapper.StudentMapper"/>
    </mappers>

    注解/xml都支持批量引入

    <mappers>
        <!--<mapper resource="org/myy/mapper/studentMapper.xml"/>-->
        <!--<mapper class="org.myy.mapper.StudentMapper"/>-->
        <!--以下语句可以将com.myy.mapper包中的注解接口和xml全部一次性引入-->
        <package name="org.myy.mapper"/>
    </mappers>

    3.增删改的返回值问题

      返回值可以是void,Integer、Long、Boolean

      如何操作:只需要在接口中修改返回值即可

    srcorgmyymapperStudentMapper.java

    int addStudent(Student student);

    srcorgmyy estTest.java

           //Connection - SqlSession操作Mybatis
            //conf.xml->reader
            Reader reader = Resources.getResourceAsReader("conf.xml");
            //reader->sqlSession
    
            //可以通过build的第二参数 指定数据库环境
            SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(reader,"devOracle");
            SqlSession session = sessionFactory.openSession(true);//设置自动提交
    
            StudentMapper studentMapper=session.getMapper(StudentMapper.class);
            Student student=new Student(1,"xx006",105,"xx");
    
            int result=studentMapper.addStudent(student);
            System.out.println("增加了"+result+"个学生");
         session.commit();
         
    session.close();

    结果:增加了1个学生
  • 相关阅读:
    定时机制
    选择排序
    二分插入排序
    无名管道pipe
    Makefile
    Python下划线与命名规范
    Django IDE 开发环境的搭建
    Apache如何添加虚拟目录
    在Eclipse下如何安装插件
    Python的模块、包等概念的理解
  • 原文地址:https://www.cnblogs.com/mayouyou/p/13260478.html
Copyright © 2011-2022 走看看