ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

多环境切换&&注解方式&&增删改返回值问题

2020-07-07 19:35:20  阅读:200  来源: 互联网

标签:xml src databaseId 标签 oracle && mysql 增删 返回值


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

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

src\db.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别名

src\conf.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语句写在接口的方法上

src\org\myy\mapper\StudentMapper.java

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

 

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

src\conf.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

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

src\org\myy\mapper\StudentMapper.java

int addStudent(Student student);

src\org\myy\test\Test.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个学生

标签:xml,src,databaseId,标签,oracle,&&,mysql,增删,返回值
来源: https://www.cnblogs.com/mayouyou/p/13260478.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有