Java框架 MyBatis 学习笔记(一)配置MyBatis

什么是MyBatis

MyBatis是一个第一类持久性框架,支持自定义SQL,存储过程和高级映射。MyBatis几乎消除了所有JDBC代码和手动设置参数以及检索结果。MyBatis可以使用简单的XML或Annotations来配置和映射基元,Map接口和Java POJO(Plain Old Java Objects,普通的Java 对象)到数据库记录。
                                                                                                                                               -------来自MyBatis官网的解释

配置MyBatis

1)创建项目并导包
mybatis需要jar包:mybatis-3.3.0.jar
Oracle驱动jar包:ojdbc6.jar(如果你用mysql的话就要导入mysql的包)
日志记录jar包:log4j.jar

Java框架 MyBatis 学习笔记(一)配置MyBatis_第1张图片

2)创建数据库

--创建表--
CREATE TABLE BLOG(
        ID NUMBER PRIMARY KEY,
        TITLE VARCHAR2(50),
        CONTENT VARCHAR2(2000),
        CREATE_TIME DATE,
        TYPE VARCHAR2(50)
)

--创建序列--
CREATE SEQUENCE BLOG_ID_SEQ
			INCREMENT BY 1 
			START WITH 1 
			NOMAXVALUE 
			NOCYCLE 
			NOCACHE;

3)驱动配置文件

建好结构,配置文件先创建好

Java框架 MyBatis 学习笔记(一)配置MyBatis_第2张图片Java框架 MyBatis 学习笔记(一)配置MyBatis_第3张图片

 4)配置文件mybatis-config.xml

每个MyBatis应用程序都围绕一个SqlSessionFactory实例。可以使用SqlSessionFactoryBuilder获取SqlSessionFactory实例。SqlSessionFactoryBuilder可以从XML配置文件或Configuration类的自定义准备实例构建SqlSessionFactory实例。

配置XML文件包含MyBatis系统核心的设置,包括用于获取数据库连接实例的DataSource,以及用于确定如何确定事务范围和控制事务的TransactionManager。XML配置文件的完整详细信息可以在本文档的后面找到。




	
	
	
	
		
		
			
			
			
			
				
				
				
				
				
				
				
				
			
		
	

5)创建实体对象

package club.superbug.mybatis.entity;

import java.io.Serializable;
import java.util.Date;

public class Blog implements Serializable {

	private static final long serialVersionUID = 1L;

	private int id; // 博文ID
	private String title; // 博文标题
	private String content; // 博文内容
	private Date create_time; // 创建日期
	private String type; // 类型

	public Blog() {
		super();
	}

	public Blog(int id, String title, String content, Date create_time, String type) {
		super();
		this.id = id;
		this.title = title;
		this.content = content;
		this.create_time = create_time;
		this.type = type;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public String getContent() {
		return content;
	}

	public void setContent(String content) {
		this.content = content;
	}

	public Date getCreate_time() {
		return create_time;
	}

	public void setCreate_time(Date create_time) {
		this.create_time = create_time;
	}

	public String getType() {
		return type;
	}

	public void setType(String type) {
		this.type = type;
	}

	public static long getSerialversionuid() {
		return serialVersionUID;
	}

	@Override
	public String toString() {
		return "Blog [id=" + id + ", title=" + title + ", content=" + content + ", create_time=" + create_time
				+ ", type=" + type + "]";
	}

}

5)创建方法接口BlogController.java

package club.superbug.mybatis.mapper;

import java.util.List;

import club.superbug.mybatis.entity.Blog;

public interface BlogMapper {

	/**
	 * 新增博客
	 * @param blog
	 * @return
	 * @throws Exception
	 */
	public int insertBlog(Blog blog) throws Exception;

	/**
	 * 根据id修改博客
	 * @param blog
	 * @param id
	 * @return
	 * @throws Exception
	 */
	public int updateBlog(Blog blog, int id) throws Exception;
	
	/**
	 * 根据id删除博客
	 * @param id
	 * @return
	 * @throws Exception
	 */
	public int deleteBlog(int id) throws Exception;
	
	/**
	 * 根据id查看博客
	 * @param id
	 * @return
	 * @throws Exception
	 */
	public Blog selectBlog(int id) throws Exception;
	
	/**
	 * 查询所有博客信息
	 * @return
	 * @throws Exception
	 */
	public List selectBlog() throws Exception;
}

6)创建映射文件blogMapper.xml

MyBatis 真正的力量是在映射语句中。和对等功能的jdbc来比价,映射文件节省非常多的代码量,MyBatis的构建就是聚焦于sql的。

sql映射文件有例如以下几个顶级元素:(按顺序)

cache配置给定命名空间的缓存。
cache-ref从其它命名空间引用缓存配置。
resultMap最复杂,也是最有力量的元素。用来描写叙述怎样从数据库结果集中来载入你的对象。
parameterMap已经被废弃了!老式风格的參数映射。内联參数是首选,这个元素可能在将来被移除。
sql能够重用的SQL块,也能够被其它语句引用。
insert映射插入语句。
update映射更新语句。
delete映射删除语句。
select映射查询语句。 





	
	
		INSERT INTO
		BLOG(ID,TITLE,CONTENT) VALUES(BLOG_ID_SEQ.NEXTVAL,#{title},#{content})
	

	
	
		DELETE FROM BLOG WHERE
		ID=#{id}
	

	
	
		UPDATE BLOG SET
		CONTENT='SpringMVC' WHERE ID=#{id}
	

	
	

	
	

	
		
		
		
		
		
		
	





这时需要为mybatis.cfg.xml里注册BlogMapper.xml文件。

			
				
				
			
		
	

	
		
		
		
		
	


7)需要建立一个工具类文件MyBatisUtil.java

package utils;

import java.io.Reader;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

/**
 * MyBatis工具类
 * @author Administrator
 *
 */
public class MyBatisUtil {
	//使用单例模式
		private static final SqlSessionFactory factory;
		static{
			String resource = "mybatis-config.xml";
			Reader reader = null;
			try {
				//使用MyBatis提供的Resources类加载mybatis的配置文件
				reader = Resources.getResourceAsReader(resource);
			} catch (Exception e) {
				System.out.println(e.getMessage());
			}
			 //构建sqlSession的工厂
			factory = new SqlSessionFactoryBuilder().build(reader);
		}
		
		
		
		public static SqlSessionFactory getFactory(){
			
			return factory;
		}
}

8)写个测试类测试一下

这里用junit
 

package club.superbug.mybatis.test;

import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import club.superbug.mybatis.entity.Blog;
import club.superbug.mybatis.mapper.BlogMapper;
import utils.MyBatisUtil;

public class MyTest {

	@Test
	public void insertBlog() {
	    SqlSession session = MyBatisUtil.getFactory().openSession();
	    BlogMapper mapper = session.getMapper(BlogMapper.class);
	    Blog blog = new Blog();
	    blog.setTitle("java");
	    blog.setContent("不如c");
	    try {
			 int a = mapper.insertBlog(blog);
			 System.out.println(blog.toString());
			 session.commit();
			 if(a>0){
				 System.out.println("插入成功");
			 }

		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	   
	}

}

Java框架 MyBatis 学习笔记(一)配置MyBatis_第4张图片

大功告成!

你可能感兴趣的:(Java框架 MyBatis 学习笔记(一)配置MyBatis)