MyBatis笔记一

MyBatis笔记:分为三篇。

1:前置内容(JDBC的缺点即为什么要使用MyBatis、搭建MyBatis的开发环境)、MyBatis单表操作(针对性讲解MyBatis的用法)、MyBatisUtil的封装

2:MyBatis一些便捷配置、MyBatis多表连接操作、ORM(1-1,1-N,N-N)

3:MyBatis的通用查询、高效修改、批量删除。 缓存机制。


JDBC完成数据持久化操作的缺点?

1. 存在大量的冗余代码。

2. 必须手工处理(ORM),将结果集封装成实体对象。

3. 查询效率低,没有对数据访问进行过优化(cache)。

一:MyBatis

概念:

//MyBatis 本是apache的一个开源项目iBatis, 2010年迁移到了google code,并且改名为MyBatis 。2013年11月托管到Github。

I.MyBatis框架是一个持久层框架,可以完成对数据库的增删改查操作。

II.对原有JDBC的操作进行了封装,解决了JDBC操作数据库时存在的共性问题。

 

 

二:搭建开发环境

首先从官方网站下载并解压myBatis

 

I. 引入Jar包:

1).mybatis-3.2.2.jar核心Jar包。

2).lib目录中的第三方依赖Jar包。

3).ojdbc6.jar驱动Jar包。

4).add build path(Java项目需要此操作、web项目自动完成该操作。)

 

II. 引入配置文件:

1). mybatis-config.xml 放置在src下,用于配置Mybatis运行的相关参数。

2). SampleMapper.xml 替代原有的实现类,名称、放置位置不限,建议效仿JDBC实现类的命名和位置

3). log4j.properties【可选】日志文件,放置在src下,用于将Mybatis的运行过程记录在日志中或打印在控制台上。

 

III. 引入DTD文件:

mybatis-3-config.dtd、mybatis-3-mapper.dtd。

(只添加Public ID即可)

  

①config.xml文件:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "mybatis-3-config.dtd" >

②mapper.xml文件:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "../mybatis-3-mapper.dtd" >

 

Window->Preferences

 

 

 

 

三:

I:初始化设置:mybatis-config.xml设置

 

II:单表下的MyBatis的增删改查的需要注意点

①:查询单个对象或多个对象(List<User>)

关注点:封装对象(resultType)

 

 

②:根据ID删除操作

关注点:单参传值 、注解

 

③:插入操作

关注点:参数类型为-》对象    先查询数据库中的某值作为ID

 

④:更新操作

关注点:多参传值、注解

 

III:注册mybatis-config.xml文件

 

 

IV. 使用MyBatis的API:

 

V. 注意开发顺序:Table、Entity、DAO接口、Mapper.xml、注册、API。

 

VI. 常见错误:

 

 

VII.MyBatisUtil的封装

 

源代码:

package util;

import java.io.IOException;
import java.io.InputStream;

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 MyBatisUtil {
	private static SqlSessionFactory factory=null;
	private static ThreadLocal<SqlSession> tl=new ThreadLocal<SqlSession>();
	static{
		InputStream is=null;
		try {
			is=Resources.getResourceAsStream("mybatis-config.xml");
			factory= new SqlSessionFactoryBuilder().build(is);
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			try {
				if(is!=null)
					is.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}		
	}
	
	public static SqlSession getSqlSession(){
		SqlSession session=tl.get();
		if(session==null){
			session=factory.openSession();
			tl.set(session);
		}
		return session;
	}
	
	public static void colse(){
		SqlSession session=getSqlSession();
		session.close();tl.remove();
	}
	
	public static void commit(){
		SqlSession session=getSqlSession();
		session.commit();
		colse();
	}
	
	public static void rollback(){
		SqlSession session=getSqlSession();
		session.rollback();
		colse();	
	}
	
	public static <T> T getDao(Class<T> clazz){
		SqlSession session=getSqlSession();
		T t=session.getMapper(clazz);
		return t;
	} 
	
}

猜你喜欢

转载自blog.csdn.net/sugar_map/article/details/80274697