1.准备
想在项目中使用MyBatis,需要导入mybatis-x.x.x.jar。如果是使用maven管理jar包,就在配置文件pom.xml中配置:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>x.x.x</version>
</dependency>
2.通过xml的方式创建SqlSessionFatory
Mybatis应用是围绕SqlSessionFactory展开的。一个SqlSessionFactory可以通过SqlSessionFactpryBuilder创建。SqlSessionFactoryBuilder可以通过XML配置文件方式创建,也可以来自于定制的配置类实例。
(1)通过xml配置的方式如下:
//配置文件的位置 mybatis_config.xml 我是直接放在src目录下
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
//创建SqlSessionFactory
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
mybatis-config.xml是整个myBatis应用的核心配置,配置的内容包括:使用的数据库连接实例数据源,和决定事务的作用域和范围的事务管理。
以下是我使用的一些配置:
<?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="jdbc.properties"></properties>
<!-- 打印数据库执行的sql -->
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
<!-- 数据库连接 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
</configuration>
需要大家注意的是:这个xml文件中的标签是有先后顺序的。如果标签的书写顺序不对,xml会出现以下错误:
The content of element type "configuration" must match
"(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrapperFactory?,reflectorFact
ory?,plugins?,environments?,databaseIdProvider?,mappers?)".
意思就是标签的书写先后顺序是:(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrapperFactory?,reflectorFact
ory?,plugins?,environments?,databaseIdProvider?,mappers?)
jdbc.properties内容:
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/test
username=root
password=xxx
(2)不使用XML配置
http://blog.csdn.net/qq_31065001/article/details/71455131
3小实例
(1)编写一个TestMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="gdut.ff.test">
<select id="selectTable1" resultType="map">
SELECT * FROM table1
</select>
</mapper>
namespace是一个mapper的命名空间,是唯一的,表示这是一个查询数据的操作,id是这个操作的标识,resultType是数据的返回类型。parameterType是传入类型,这里没有使用。还有其他的数据库操作对应的标签,,
(2)在mybatis-config.xml中增加以下配置:
<!-- 引入其他的配置文件 -->
<mappers>
<mapper resource="gdut/ff/mapper/TestMapper.xml"></mapper>
</mappers>
resource指向的是Mapper.xml的存放位置。
(3)做一个单元测试
@Test
public void testSelect(){
//配置文件的位置
String resource = "mybatis-config.xml";
try {
//读取配置文件
InputStream inputStream = Resources.getResourceAsStream(resource);
//创建SqlSessionFactory
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sessionFactory.openSession();
List<Map<String,String>> list = session.selectList("gdut.ff.test.selectTable1");
if(list != null && list.size() > 0){
for(Map<String, String> map:list){
String id = map.get("id");
String name = map.get("name");
System.out.println(id+":"+name);
}
}
} catch (IOException e) {
e.printStackTrace();
}finally{
session.close();
}
}
SqlSessionFactory创建完之后开启session,session可以执行不同的数据库操作,遇上update,delete,insert操作,需要提交事务,才能发挥作用。无论执行成功,或是有异常,最终都需要关闭session(会话)。
session定义了很多方法可以对数据库进行操作。