1.什么是MyBatis
MyBatis是一个支持sql,存储过程以及高级映射的持久性框架
2.MyBatis的作用
MyBatis它主要就是用来操作数据库的增删改查的,他可以自动只用借口就能完成操作做到了持久层代码的的零实现
3.简单配置入门
1.导入包
创建一个数据库sms,并且创建一个表t_student
2.创建配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0" "mybatis-3-config.dtd" >
<configuration>
<environments default="sms">
<!-- 环境标签 -->
<environment id="sms">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<!-- 配置四要素 -->
<property name="driver" value="org.gjt.mm.mysql.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/sms"/>
<property name="username" value="root"/>
<property name="password" value="555555"/>
</dataSource>
</environment>
</environments>
<!-- 配置指定加载的映射文件 -->
<mappers>
<mapper resource="cn/gzsxt/mapper/xml/StudentMapper.xml"/>
</mappers>
</configuration>
3.创建一个会话工厂
package cn.gzsxt.utils;
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;
public class MybatisUtils {
//要求对外只开放一个会话
private static final SqlSessionFactory SSF = createSSF();
//声明一个线程变量
private static final ThreadLocal<SqlSession> THREAD_LOCAL = new ThreadLocal<>();
//获得会话工厂
public static SqlSessionFactory createSSF() {
try {
//读取配置文件
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
//创建会话构造类对象
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//构建会话工厂
return builder.build(reader);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
//获得会话
public static SqlSession getSession() {
//如果线程没有变量就把获得的会话对象放在线程变量里
if(THREAD_LOCAL.get()==null) {
SqlSession session = SSF.openSession();
THREAD_LOCAL.set(session);
}
//如果已有变量直接返回这个线程
return THREAD_LOCAL.get();
}
//使用了线程,关闭会话的时候必须清楚线程对象
public static void close() {
if(THREAD_LOCAL.get()!=null) {
SqlSession session = SSF.openSession();
session.close();
THREAD_LOCAL.remove();
}
}
public static void main(String[] args) {
System.out.println(MybatisUtils.getSession());
System.out.println(MybatisUtils.getSession());
}
}
4.创建一个与sms数据库中t_student表字段一一对应并满足规范的实体类Student,并创建其属性的get,set方法
5.写一个映射接口StudentMapper
6.根据映射接口配置对应的mapper映射xml在其中配置插入sql语句,其中id的值必须与要插入的方法名一致,sql语句中values里括号里的值必须与实体类Student字段一一对应
7.编写一个测试类