多环境切换&&注解方式&&增删改返回值问题
作者:互联网
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