Mybatis介绍
MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。
详细了解请观看:http://www.mybatis.org/mybatis-3/
通过一个实例我们来了解Mybatis主配置文件及应用
mybatis-3.3.0.jar下载路径:https://github.com/mybatis/mybatis-3/releases
1.主配置文件batis.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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<!-- 数据源配置 -->
<dataSource type="POOLED">
<!-- 数据库驱动 -->
<property name="driver" value="com.mysql.jdbc.Driver" />
<!-- 数据库连接URL-->
<property name="url" value="jdbc:mysql://localhost:3306/mysqljdbc" />
<!-- 数据库用户名和密码 -->
<property name="username" value="root" />
<property name="password" value="" />
</dataSource>
</environment>
</environments>
<!-- 配置实体映射文件,用于数据库CRUD
<mappers>
<mapper resource="org/iflysse/training/ibatis/biz/mapper/familyMapper.xml" />
</mappers>
-->
</configuration>
2.测试类BatisTest :
package org.iflysse.test;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class BatisTest {
public static void main(String[] args) {
// 进行MyBatis主配置文件的设置
String resource = "batis.xml";
InputStream inputStream = null;
try {
//javaSE类记载器,读取MyBatis的配置文件,获取数据库的连接信息
//使用MyBatis提供的Resources类加载mybatis的配置文件(它也加载关联的映射文件)
//1.通常使用流的形式,读取这个batis.xml
inputStream = Resources.getResourceAsStream(resource);
/*2.文件读取
File file=new File("src/batis.xml");
Reader reader=new FileReader(file);
SqlSessionFactory sqlSessionfactory = new SqlSessionFactoryBuilder().build(reader);
*/
} catch (IOException e) {
e.printStackTrace();
}
//使用SessionFactory创建映射对象,进行数据查询
//2-MyBatis正式工作:构建sqlsession工厂 ,类似之前JDBC的连接Connection
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
.build(inputStream);
System.out.println("主配置文件已经加载完毕..." + sqlSessionFactory);
//创建会话对象,并使用她来进行数据库的各项 操作
SqlSession session = sqlSessionFactory.openSession();
System.out.println("创建会议对象" + session);
}
}
3.控制台输出结果:
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.apache.ibatis.reflection.Reflector (file:/D:/Users/Administrator/eclipse-workspace/MyBatis/lib/mybatis-3.3.0.jar) to method java.lang.Class.checkPackageAccess(java.lang.SecurityManager,java.lang.ClassLoader,boolean)
WARNING: Please consider reporting this to the maintainers of org.apache.ibatis.reflection.Reflector
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
主配置文件已经加载完毕...org.apache.ibatis.session.defaults.DefaultSqlSessionFactory@40e6dfe1
创建会议对象org.apache.ibatis.session.defaults.DefaultSqlSession@50a7bc6e
主配置文件优化:
其实我们完全可以将数据库的连接配置信息写在一个properties文件中,然后在batis.xml文件中引用properties文件,具体做法如下:
1、在src目录下新建一个db.properties文件,如下图所示:
在db.properties文件编写连接数据库需要使用到的数据库驱动,连接URL地址,用户名,密码,如下:
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mysqljdbc
name=root
password=
2、在MyBatis的batis.xml文件中引用db.properties文件,如下:
<?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>
<!-- 引用db.properties配置文件 -->
<properties resource="db.properties"/>
<!--
development : 开发模式
work : 工作模式
-->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<!-- value属性值引用db.properties配置文件中配置的值 -->
<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${name}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
</configuration>