一.工具类
package util;
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 java.io.InputStream;
public class MyBatisUtil {
//获得SqlSession工厂
private static SqlSessionFactory factory;
//创建ThreadLocal绑定当前线程中的SqlSession对象
private static final ThreadLocal THREAD_LOCAL = new ThreadLocal();
static {
try {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
factory = new SqlSessionFactoryBuilder().build(is);
} catch (Exception e) {
e.printStackTrace();
}
}
//获得连接(从THREAD_LOCAL中获得当前线程SqlSession)
private static SqlSession openSession(){
SqlSession session = THREAD_LOCAL.get();
if(session == null){
session = factory.openSession();
THREAD_LOCAL.set(session);
}
return session;
}
public static void closeSession(){
SqlSession session = THREAD_LOCAL.get();
session.close();
THREAD_LOCAL.remove();
}
public static void commit(){
SqlSession session = openSession();
session.commit();
closeSession();
}
public static void rollback(){
SqlSession session = openSession();
session.rollback();
closeSession();
}
public static T getMapper(Class clazz){
SqlSession session = openSession();
return session.getMapper(clazz);
}
}
二.自动装备等级
全等级匹配多表联查映射文件可不用写对应列,只要写association标注实体类即可,建议每次自动加上全等级匹配节省代码
三.缓存
存在内存中的临时数据
一级缓存(session级别,也称本地缓存)不能跨session
结果: 同一个session只会执行一次sql语句
二级缓存:全局缓存namespace级别
核心配置文件加入
映射配置文件加入
实现类实现Serializable接口
要记得关闭session,不然会进入一级缓存
四.注解
可直接使用注解在Mapper接口写sql语句,后面直接调用即可
public interface PhoneMapper {
@Delete("delete from phone where pid=#{id}")
public int delete(int id);
@Insert("insert into phone values(default,#{pname},#{pcolor},#{price},#{b.bid})")
public int insert(Phone p);
@Select("select * from phone where pid=#{id}")
public Phone fid(int id);
@Update("update phone set pname=#{pname},pcolor=#{pcolor},price=#{price} where pid=#{id}")
public int update(@Param("pname") String pname, @Param("pcolor")String pcolor,@Param("price") String price, @Param("id")int id);



