1、MyBatis的介绍
- MyBatis 是支持普通SQL 查询、存储过程和高级映射的优秀持久层框架
- MyBatis 可以使用简单的XML 或注解用于配置和原始映射
- JDBC、dbutils、MyBatis、Hibernate的区别
![](https://images2015.cnblogs.com/blog/773205/201509/773205-20150915093343773-225329055.jpg)
2、快速入门
2.1 添加ja的包
- mybatis-3.3.0.jar 下载地址:http://pan.baidu.com/s/1i3toaPJ
- mysql-connector-java-5.1.36-bin 下载地址:http://pan.baidu.com/s/1pJ5ngin
2.2 建库+表
create database mybatis;
use mybatis;
CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20), age INT);
INSERT INTO users(NAME, age) VALUES('Tom', 12);
INSERT INTO users(NAME, age) VALUES('Jack', 11);
2.3 添加Mybatis 的配置文件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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
</configuration>
- environments default="development | work"
- <environment id="development"> 这里的id必须和default的值保持一致
- <transactionManager type="JDBC" />事务管理,MyBatis有二种
- JDBC:这个配置直接简单使用了JDBC的提交和回滚设置。它依赖于从数据源得到的连接来管理事务范围。
- MANAGED:这个配置几乎没做什么。它从来不提交或回滚一个连接。而它会让容器来管理事务的整个生命周期(比如Spring或JEE应用服务器的上下文)。
- <dataSource type="POOLED">:配置数据源,有三种内奸的数据源类型
- UNPOOLED:这个数据源的实现是每次被请求时简单打开和关闭连接。它有一点慢,这是对简单应用程序的一个很好的选择,因为它不需要及时的可用连接
- POOLED:这是JDBC连接对象的数据源连接池的实现,用来避免创建新的连接实例时必要的初始连接和认证时间。这是一种当前Web应用程序用来快速响应请求很流行的方法。
- JNDI:这个数据源的实现是为了使用如Spring或应用服务器这类的容器,容器可以集中或在外部配置数据源,然后放置一个JNDI上下文的引用。
2.4 定义表所对应的实体类
public class User {
private int id;
private String name;
private int age;
//get/set方法
}
2.5 定义操作users 表的sql 映射文件userMapper.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="cn.imentors.mybatis.test1.UserMapper">
</mapper>
- <mapper namespace ...> namespace是为了保证这个xml文件的唯一性,我们的命名方式可以采用xml文件所在的包+xml文件名(不要后缀)
- 根据id查询得到一个user对象
<!-- 根据id查询得到一个user对象 -->
<select id="getUserById" parameterType="int" resultType="cn.imentors.mybatis.test1.User">
select * from users where id=#{id}
</select>
- parameterType:传入参数的类型
- resultType:查询结果的类型
2.6 在config.xml 中注册这个映射文件
</environments>
<mappers>
<mapper resource="cn/imentors/mybatis/test1/UserMapper.xml"/>
</mappers>
</configuration>
注:这是一个路径结构,不是包的结构
2.7 编写测试代码:执行定义的select语句
public class TestMain {
public static void main(String[] args) throws IOException {
String resource = "conf.xml";
//加载mybatis 的配置文件(它也加载关联的映射文件)
InputStream is = TestMain.class.getClassLoader().getResourceAsStream(resource);
//构建sqlSession 的工厂
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
//创建能执行映射文件中sql 的sqlSession
SqlSession session = sessionFactory.openSession();
//映射sql 的标识字符串
String statement = "cn.imentors.mybatis.test1.UserMapper"+".getUserById";
//执行查询返回一个唯一user 对象的sql
User user = session.selectOne(statement, 1);
System.out.println(user);
}
}
注
- Mysql连接报错:Unknown system variable 'language'
- 原因及解决方法:mysql-connector-java-5.1.36.jar 版本太高了,换成mysql-connector-java-5.1.24.jar 问题解决!
捐赠我们
良师益友工作室一直在致力于帮助编程爱好更加快速方便地学习编程,如果您对我们的成果表示认同并且觉得对你有所帮助,欢迎您对我们捐赠^_^。 ![](https://images2015.cnblogs.com/blog/773205/201509/773205-20150915093344289-1202862532.jpg)
良师益友工作室一直在致力于帮助编程爱好更加快速方便地学习编程,如果您对我们的成果表示认同并且觉得对你有所帮助,欢迎您对我们捐赠^_^。
![](https://images2015.cnblogs.com/blog/773205/201509/773205-20150915093344289-1202862532.jpg)