config是source folder
数据库配置信息一般放到properties资源文件中,方便修改连接数据库参数
1.1 mybatis-config.xml全局配置文件中引入:
1.2 新建db.properties文件
位置:在src或资源目录中
mysql.driver = com.mysql.jdbc.Driver
mysql.url = jdbc:mysql://localhost:3306/test
mysql.username = root
mysql.password = root
1.3 修改mybatis-config.xml全局配置文件中的数据源
这是 MyBatis 中极为重要的调整设置,它们会改变MyBatis 的运行时行为。
2.1 mybatis日志配置
1.导入LOG4J的包到mybatis
2.新建log4j.properties 位置:src根目录下
log4j.rootLogger=DEBUG,Console
log4j.logger.org.springframework=INFO
log4j.logger.org.mybatis.spring=INFO
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.logger.org.apache.ibatis=INFO
log4j.logger.com.yc.dao=INFO
3.settings中配置
4.在需要用到日志的类中增加下如静态属性:
private static Logger log = Logger.getLogger(Demo2.class);
5.测试
测试:
log.debug("xxxx")
log.info("xxxx")
log.error("xxxx")
类型别名是为 Java 类型设置一个短的名字,可以方便我们引用某个类
如:StudentMapper.xml文件里面的 resultType可以省略包名
简化为:
实际开发中我们使用Spring管理数据源,并进行事务控制的配置来覆盖这些配置
environments->指定使用环境:
default:指定一个环境的标识符来快速的切换环境
environment->配制具体环境:
id:指定当前环境的唯一标识
transactionManager:指定事务管理,一般采用JDBC的方式
dataSource:数据源的配制
其中type有四个取值:
– UNPOOLED:不使用连接池
– POOLED:使用连接池
– JNDI: 在应用服务器这类容器中查找指定的数据源
– 自定义:实现DataSourceFactory接口,定义数据源的获取方式
MyBatis 可以根据不同的数据库厂商执行不同的语句
DB_VENDOR:使用MyBatis提供的默认方式解析数据库厂商标识
Property-name:数据库厂商标识
Property-value:为标识起一个别名,方便SQL语句使用databaseId属性引用
5.1 案例:不同数据库之间快速切换
(1)导入oracle驱动包 在oracle中准备如下数据
CREATE TABLE stu(
sid number(10),
sname VARCHAR2(20),
age number(4),
email VARCHAR2(50),
tid number(10),
cid number(10),
PRIMARY KEY (sid)
);
INSERT INTO stu VALUES (100001,'哈哈',17,'[email protected]',1001,1001);
INSERT INTO stu VALUES (100002,'嘿嘿',16,'[email protected]',1001,1001);
INSERT INTO stu VALUES (100003,'嘻嘻',17,'[email protected]',1002,1002);
commit;
(2)在db.properties中增加oracle连接配置
oracle.driver=oracle.jdbc.driver.OracleDriver
oracle.url=jdbc:oracle:thin:@localhost:1521:orcl
oracle.username=scott
oracle.password=a
(3)在environments中增加一个oracle的environment的配置
(4)在mybatis-config.xml全局配置文件中增加databaseIdProvider 环境配置
(5)在sql映射文件中配置如下:
注:实际项目开发时 尽量将表名 属性名一致 这样它可以自动检测是使用oracle还是mysql 不需要标注databaseId
databaseId在使用分页查询这种在mysql和oracle中语句不同的时候使用即可
(6)测试
将environments的default换成test和development 测试类中分别执行selectStudentByAll方法 会发现输出结果不同
StudentMapper.xml
insert into student values
(null,#{sname},#{age},#{email},#{tid},#{cid})
update student set
sname=#{sname},age=#{age},email=#{email},tid=#{tid},cid=#{cid} where
sid=#{sid}
delete from student where sid = #{sid}
mybatis-config.xml
测试代码
package com.wsm.demo;
import java.io.IOException;
import java.util.List;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.log4j.Logger;
import com.wsm.dao.StudentMapper;
import com.wsm.pojo.Student;
public class Demo2 {
private static Logger log = Logger.getLogger(Demo2.class);
public static void main(String[] args) {
try {
SqlSessionFactory factory = new SqlSessionFactoryBuilder().
build(Resources.getResourceAsStream("mybatis-config.xml"));
SqlSession session = factory.openSession();
StudentMapper sm = session.getMapper(StudentMapper.class);
List stus = sm.selectStudentByAll();
log.info(stus);
session.commit();
session.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}