mytabis框架简单介绍及基本开发步骤

一、什么是 MyBatis ?

    MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。

    MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

    简单来说,MyBatis 框架最大特点就是:几乎避免了所有JDBC代码、手动设置参数和获取结果集。这将大大简化开发过程。


二、MyBatis开发步骤

    在开发前,先建立数据库表。(oracle为例)

-- Create table
create table COURSE
(
  course_id    NVARCHAR2(50) not null,
  course_name  NVARCHAR2(50) not null,
  course_score NUMBER not null,
  start_date   DATE not null
)
alter table COURSE
add constraint PK_COURSE primary key (COURSE_ID);
alter table COURSE
add constraint UQ_COURSE_NAME unique (COURSE_NAME);
    为数据库表添加一条数据
INSERT INTO course(course_id,course_name,course_score,start_date) 
		VALUES(course001,'mybatis',3,sysdate);

然后正式开始开发:

    1. 新建一个java web工程或java工程( 以java web工程为例 );

        在eclipse javaEE 中新建一个web项目,项目名为mybatisdemo

        新建mybatis工程的java package包,分别为:bean,dao,config,test

    2. 把mybatis框架的jar包及其依赖包copy到项目工程中;


    3. 编写数据实体类,与数据库表进行对应 - 为orm做准备

package com.djomega.mybatisdemo.bean;

import java.util.Date;

public class Course {
	
	private String courseId;
	private String courseName;
	private Integer courseScore;
	private Date startDate;
	
	public Course() {
		super();
	}
	
	public Course(String courseId, String courseName, Integer courseScore, Date startDate) {
		super();
		this.courseId = courseId;
		this.courseName = courseName;
		this.courseScore = courseScore;
		this.startDate = startDate;
	}


	public String getCourseId() {
		return courseId;
	}
	public void setCourseId(String courseId) {
		this.courseId = courseId;
	}
	public String getCourseName() {
		return courseName;
	}
	public void setCourseName(String courseName) {
		this.courseName = courseName;
	}
	public Integer getCourseScore() {
		return courseScore;
	}
	public void setCourseScore(Integer courseScore) {
		this.courseScore = courseScore;
	}
	public Date getStartDate() {
		return startDate;
	}
	public void setStartDate(Date startDate) {
		this.startDate = startDate;
	}
}

    4. 定义数据操作接口,并在接口中定义数据操作

package com.djomega.mybatisdemo.dao;

import java.util.List;

import com.djomega.mybatisdemo.bean.Course;

//接口用于定义数据库的操作
public interface ICourseDao {
	//查询所有课程
	public List<Course> findAll();
	
}

    5. 在dao包下编写一个接口映射文件(ICourseDao.xml),对接口的数据操作进行映射

<?xml version="1.0" encoding="UTF-8"?>
<!-- mybatis接口映射文件,用于映射接口操作,
	mybatis会根据配这文件的配置实现数据库操作 -->
<!-- 注意:mybatis有两个配置文件,一个是全局配置文件,一个是接口映射文件
	接口映射文件需要使用接口文档映射定义-->	
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  <!-- 在mapper映射文件中,使用mapper便签进行实现接口映射,使用namespace指定要映射的接口;
  		即namespace配置的是接口的名称,一般的一个映射文件实现(映射)一个接口,
  		在运行过程中,mybatis的代理类会根据配置实现数据操作接口定义的数据库操作(相当于由mybatis编写了一个接口实现类)
   -->
  <mapper namespace="com.djomega.mybatisdemo.dao.ICourseDao">
  	<!-- resultMap用于配置查询结果的映射关系 -->
  	<resultMap type="Course" id="courseMap">
  		<!-- id用于配置数据库的主键列或唯一键列 -->
  		<!-- orm框架可以完成数据库表的列与java类的属性的映射关系- ojdbc mapping对象映射,relation mapping关系映射 -->
  		<id column="course_id" property="courseId"/>
  		<result column="course_name" property="courseName"/>
  		<result column="course_score" property="courseScore"/>
  		<result column="start_date" property="startDate"/>
  	</resultMap>
  	
  	<!-- 在以上标签中,使用id配置接口的方法名称,courseMap用于配置自定义的结果映射关系 -->
  	
  	<select id="findAll" resultMap="courseMap">  	
  		select * from course
  	</select>
  	
  	<!-- 注意使用mybatis进行配置,id不能重名,即接口方法不能重载 -->
  	<!-- 如果接口方法有参数,需要使用parameterType配置参数的类型(原始数据类型或对象类型),多个参数使用parameterMap进行配置(集合类型) -->
  	<select id="findById" resultMap="courseMap" parameterType="String">
  		<!-- 可以使用#{}获取参数值 -->
  		select * from course where course_id=#{id}
  	</select>
  	
  	
  </mapper>

    6. 在config包下编写mybatis全局配置文件(mybatis-config.xml),配置数据库连接参数,配置映射文件或数据操作接口...

<?xml version="1.0" encoding="UTF-8"?>
<!-- 这是mybatis全局配置文件,用于进行mybatis配置 -->
<!-- dtd: -->
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">


<configuration>
	
	<properties>
		
		<property name="p_driver" value="oracle.jdbc.driver.OracleDriver"/>
		<property name="p_url" value="jdbc:oracle:thin://localhost:1521/orcl"/>
		<property name="p_username" value="djomega"/>
		<property name="p_password" value="123456"/> 
		
	</properties>

	<typeAliases>
		<!-- 针对pojo类可以在全局配置文件中配置类型别名,在接口映射文件中可以使用别名简化配置 -->
		<!-- 在mybatis对多个java类型提供内建别名,查看mybatis编程手册(api) -->
		<!-- mybatis的别名使用通过类型处理类进行类型转换的,mybatis提供了赋值类型的人自定义转换接口进行类型扩展 -->
		<!-- <typeAlias type="com.djomega.mybatisdemo.bean.Course" alias="Course"/> -->
		<!-- 如果要配置的别名很多,可以使用package进行简化配置,配置pojo类所在的package包即可 -->
		<package name="com.djomega.mybatisdemo.bean"/>
	</typeAliases>
	<!-- typeHandlers用于配置类型转换器,别名是通过类型转换类把java类型互换成数据库类型 -->
	<typeHandlers>
	</typeHandlers>
  <environments default="development">
    <environment id="development">
   	  <!-- 配置事务管理器 -->
      <transactionManager type="JDBC"/>
      <!-- 配置jdbc的四个参数 -->
    
      <dataSource type="POOLED">
        <property name="driver" value="${p_driver}"/>
        <property name="url" value="${p_url}"/>
        <property name="username" value="${p_username}"/>
        <property name="password" value="${p_password}"/>
      </dataSource>
    </environment>
  	
  </environments>
  
  <mappers>
  	<package name="com.djomega.mybatisdemo.dao"/> 
  </mappers>
</configuration>

    7. 编写测试类,测试mybatis开发框架:

            四个步骤:获取mybatis环境-->实例化数据操作接口-->调用接口方法-->处理操作数据结果

package test;

import java.io.IOException;
import java.io.InputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

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 org.apache.log4j.Logger;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.djomega.mybatisdemo.bean.Course;
import com.djomega.mybatisdemo.dao.ICourseDao;

public class TestICourseDao {
	private Logger logger = Logger.getLogger(TestICourseDao.class);
	private SqlSession session = null;
        @Test
	public void testFindAll() {
		try {
			// 1.加载mybatis环境
			String resource = "config/mybatis-config.xml";
			InputStream inputStream = Resources.getResourceAsStream(resource);
			SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

			// 2.通过mybatis实例化数据访问接口
			session = sqlSessionFactory.openSession();
			ICourseDao courseDao = session.getMapper(ICourseDao.class);

			// 3.调用数据访问接口,进行数据操作
			List<Course> list = courseDao.findAll();
			// 4.处理数据操作的结果
			for (Course course : list) {
				logger.info(course.getCourseId() + course.getCourseName() + course.getCourseScore()
						+ course.getStartDate());
			}
		} catch (IOException e) {
			logger.warn("发生了异常", e);
		}
	}




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值