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

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)驱动配置文件

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

 4)配置文件mybatis-config.xml

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

配置XML文件包含MyBatis系统核心的设置,包括用于获取数据库连接实例的DataSource,以及用于确定如何确定事务范围和控制事务的TransactionManager。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>
	<!-- 引入外部配置文件 -->
	<properties resource="oracle.properties"></properties>
	<!-- 默认的环境ID -->
	<environments default="development">
		<!-- 每个environment元素定义的环境ID -->
		<environment id="development">
			<!-- 事务处理方式 -->
			<transactionManager type="JDBC" />
			<!-- 数据源配置 -->
			<dataSource type="POOLED">
				<!-- 数据库JDBC驱动 -->
				<property name="driver" value="${jdbc.driver}" />
				<!-- 数据库URL -->
				<property name="url" value="${jdbc.url}" />
				<!-- 数据库用户 -->
				<property name="username" value="${jdbc.username}" />
				<!-- 密码 -->
				<property name="password" value="${jdbc.password}" />
			</dataSource>
		</environment>
	</environments>
</configuration>

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<Blog> selectBlog() throws Exception;
}

6)创建映射文件blogMapper.xml

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

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

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

<?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">
<!-- 映射器名字空间,即BlogMapper对象的完整路径名 -->
<mapper namespace="club.superbug.mybatis.mapper.BlogMapper">
	<!-- insert:插入单个博客信息 -->
	<insert id="insertBlog" parameterType="Blog">
		INSERT INTO
		BLOG(ID,TITLE,CONTENT) VALUES(BLOG_ID_SEQ.NEXTVAL,#{title},#{content})
	</insert>

	<!-- delete:通过Id删除 -->
	<delete id="deleteById" parameterType="int">
		DELETE FROM BLOG WHERE
		ID=#{id}
	</delete>

	<!-- update:通过Id修改博客 -->
	<update id="updateById" parameterType="int">
		UPDATE BLOG SET
		CONTENT='SpringMVC' WHERE ID=#{id}
	</update>

	<!-- select:查询所有数据 -->
	<select id="selectAll" resultType="Blog">
		SELECT * FROM BLOG
	</select>

	<!--select:通过ID查询 -->
	<select id="selectById" resultType="Blog" parameterType="int">
		SELECT *
		FROM BLOG WHERE ID=#{id}
	</select>

	<resultMap id="blogResult" type="Blog">
		<!-- 基本数据类型映射:property="实体类属性名字" column="数据库列名" -->
		<id column="ID" property="id" />
		<id column="TITLE" property="title" />
		<id column="CONTENT" property="content" />
		<id column="CREATE_TIME" property="create_time" />
		<id column="TYPE" property="type" />
	</resultMap>





</mapper>

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

			<property name="username" value="${jdbc.username}" />
				<!-- 密码 -->
				<property name="password" value="${jdbc.password}" />
			</dataSource>
		</environment>
	</environments>

	<mappers>
		<!-- 告知映射文件方式1,一个一个的配置 -->
		<!-- <mapper resource="club/superbug/mybatis/mapper/BlogMapper.xml"/> -->
		<!-- 告知映射文件方式2,自动扫描包内的Mapper接口与配置文件 -->
		<package name="club.superbug.mybatis" />
	</mappers>

</configuration>

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();
		}
	   
	}

}

大功告成!

猜你喜欢

转载自blog.csdn.net/qq_34181343/article/details/81515303
今日推荐