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个学生
  • 相关阅读:
    防火墙透明模式
    HP管理工具System Management Homepage安装配置
    kbmmw 中JSON 中使用SQL 查询
    kbmmw 中JSON 操作入门
    第一个kbmmw for Linux 服务器
    kbmmw 5.02发布
    kbmmw 5.01 发布
    使用delphi 10.2 开发linux 上的Daemon
    使用unidac 在linux 上无驱动直接访问MS SQL SERVER
    使用delphi 10.2 开发linux 上的webservice
  • 原文地址:https://www.cnblogs.com/mayouyou/p/13260478.html
Copyright © 2011-2022 走看看