目录
3.建立测试用的数据库和表(数据库叫:how2java,id是自增的)
0.基本原理图
1.负责工作
1)根据 JDBC 规范建立与数据库的连接;
2)通过Annotaion/XML+JAVA反射技术,实现 Java 对象与关系数据库之间相互转化;
平时我们都用JDBC访问数据库,除了需要自己写SQL之外,还必须操作Connection, Statement, ResultSet 这些其实只是手段的辅助类。 不仅如此,访问不同的表,还会写很多雷同的代码,显得繁琐和枯燥。
那么用了Mybatis之后,只需要自己提供SQL语句,其他的工作,诸如建立连接,Statement, JDBC相关异常处理等等都交给Mybatis去做了,那些重复性的工作Mybatis也给做掉了,我们只需要关注在增删改查等操作层面上,而把技术细节都封装在了我们看不见的地方。
2.下载
官方中文文档 https://github.com/mybatis/mybatis-3/releases
下载地址:http://down-ww3.7down.net/pcdown/soft/xiazai/mybatis-downloads.rar
3.建立测试用的数据库和表(数据库叫:how2java,id是自增的)
4.创建实体类
package com.how2java.pojo;
/**
* 实体类
* @author Administrator
*
*/
public class Category {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
5.配置文件mybatis-config.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>
<!-- 以及别名,自动扫描com.how2java.pojo下的类型,使得在后续配置文件Category.xml中使用resultType的时候,可以直接使用Category,而不必写全com.how2java.pojo.Category -->
<typeAliases>
<package name="com.how2java.pojo"/>
</typeAliases>
<!-- 其作用主要是提供连接数据库用的驱动,数据库名称,编码方式,账号密码 -->
<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/数据库名?characterEncoding=UTF-8"/>
<property name="username" value="用户名"/>
<property name="password" value="自己的数据库密码"/>
</dataSource>
</environment>
</environments>
<!-- 映射Category.xml -->
<mappers>
<mapper resource="com/how2java/pojo/Category.xml"/>
</mappers>
</configuration>
6.配置文件Category.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">
<!-- 表示命名空间是com.how2java.pojo,在后续调用sql语句的时候,会用到它 -->
<mapper namespace="com.how2java.pojo">
<!--这条sql语句用id: listCategory 进行标示以供后续代码调用。resultType="Category" 表示返回的数据和Category关联起来,这里本应该使用的是 com.how2java.pojo.Category, 但是因为上一步配置了别名,所以直接使用Category就行了 -->
<select id="listCategory" resultType="Category">
select * from category_
</select>
</mapper>
7.测试类TestMybatis
package com.how2java;
import java.io.IOException;
import java.io.InputStream;
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 com.how2java.pojo.Category;
public class TestMybatis {
public static void main(String[] args) throws IOException {
//根据配置文件mybatis-config.xml得到sqlSessionFactory 。
String resource="mybatis-config.xml";
InputStream inputStream=Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory =
new SqlSessionFactoryBuilder().build(inputStream);
//然后再根据sqlSessionFactory 得到session
SqlSession session=sqlSessionFactory.openSession();
/*
* 通过session的selectList方法,调用sql语句listCategory。listCategory这个就是在配置文件Category.xml中那条sql语句设置的id。
* 执行完毕之后,得到一个Category集合,遍历即可看到数据。
*/
//也可以写成 session.selectList("com.how2java.pojo.listCategory"); 效果一样
List<Category> cs=session.selectList("listCategory");
for (Category category : cs) {
System.out.println(category.getName());
}
}
}
8.MyBatis使用步骤总结
1)配置mybatis-config.xml 全局的配置文件 (1、数据源,2、外部的mapper)
2)创建SqlSessionFactory
3)通过SqlSessionFactory创建SqlSession对象
4)通过SqlSession操作数据库 CRUD
5)调用session.commit()提交事务
6)调用session.close()关闭会话