一、简介
持久层框架是 Java 开发的重要部分,但是现在流行的 Hibernate 是一种比较重型的框架,MyBatis作用一种轻量化的开源持久层框架,可以提高开发效率,同时MyBatis也是一种方便掌握与使用的框架。MyBatis 最大的优点就是 SQL 与代码完全分离。提高 Java 开发的规范性与可扩展性。
二、准备工作
1、下载地址:
https://github.com/mybatis/mybatis-3/releases/tag/mybatis-3.3.0
2、导入工程所需jar包(连接mysql的jar包也是必须的)
3、日志配置
1) 加入log4j.properties配置文件
2) 修改配置文件如下
三、MyBatis工作流程
1、概述:读取基本配置文件,生成SqlSessionFactory,建立SqlSession,调用MyBatis的API,查询map配置,返回结果,关闭SqlSession。
2、基本配置文件:MyBatisConfig.xml中引入map配置文件,并且配置数据库的基本信息,如下:
<?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"/> <!-- 使用mysql数据库 -->
<property name="url" value="jdbc:mysql://localhost:3306/book"/> <!-- 自定义url-->
<property name="username" value="root"/>
<property name="password" value=""/> <!-- 使用自己数据库的密码 -->
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="book/map/User.xml"/>
</mappers>
</configuration>
3、map配置文件:map中包含各种sql语句,如下:
<?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="book.map.User">
<select id="findById" parameterType="int" resultType="book.pojo.User">
select * from User where id = #{id}
</select>
</mapper>
4、SqlSessionFactory:
每一个MyBatis的应用程序都以一个SqlSessionFactory对象的实例为核心。SqlSessionFactory对象的实例可以通过SqlSessionFactoryBuilder对象来获得。SqlSessionFactoryBuilder对象可以从XML配置文件,或从Configuration类的习惯准备的实例中构建SqlSessionFactory对象。
5、SqlSession:
在 MyBatis 中,你可以使用 SqlSessionFactory 来创建 SqlSession。一旦你获得一个 session 之后,你可以使用它来执行映射语句,提交或回滚连接,最后,当不再需要它的时 候, 你可以关闭 session。
- 代码如下:
package book.test;
import java.io.IOException;
import java.io.Reader;
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 book.pojo.User;
public class Test {
public static void main(String[] args){
String resource="book/map/MyBatisConfig.xml";
Reader reader=null;
try {
reader=Resources.getResourceAsReader(resource);
} catch (IOException e) {
e.printStackTrace();
}
SqlSessionFactory sqlMapper=new SqlSessionFactoryBuilder().build(reader);
SqlSession session=sqlMapper.openSession();
User tmp=session.selectOne("findById",1);
System.out.println("userName=="+tmp.getUserName());
session.close();
}
}
6、建立数据表:如下
插入第一个数据:id:1, userName:张山, password:zhangshan。
7、运行程序(注意实例程序建立的是java项目)
结构如下:
结果如下: