MyBatis框架

MyBatis

MyBatis框架是---->可以操作数据库的2级ORM框架
  ORM:Object+Relationship+Mapping对象关系映射
  最高级别的是4级(全自动)ORM:hibernate框架,不需要写sql,自动生成,只需要操作对象,前提是将对象和表的关系配置好。因此不管是MySQL还是Oracle都可以直接转换,数据库可移植性好,但是开发成本和学习成本高
  MyBatis:需要些SQL语句,但是比起JDBC,SQL语句不会硬编码

MyBatis是用来干嘛的

MyBatis用于取代JDBC。来实现对数据库的操作

创建MyBatis工程的步骤

  • 1.导入MyBatis的jar包,由于JDBC的jar包已经放在了Tomcat中,所以这里不需要导入JDBC的jar包MyBatis框架_第1张图片
  • 2.配置mybatis-config.xml文件
    这边使用了配置文件,将连接数据库的一些必要属性放在ishopn.properties文件中,防止了硬编码。
    < mappers >里面指明了映射文件的路径,告诉MyBatis去哪找
    MyBatis框架_第2张图片
  • 3.编写实体类以及対应的XML文件
    MyBatis框架_第3张图片
  • 实体类的代码
package com.ishopn.model;

import java.io.Serializable;

public class Commoditytype implements Serializable{
	private String ct_id;
	private String ct_name;
	public Commoditytype(String ct_id, String ct_name) {
		super();
		this.ct_id = ct_id;
		this.ct_name = ct_name;
	}
	public Commoditytype() {
		super();
		// TODO Auto-generated constructor stub
	}
	public String getCt_id() {
		return ct_id;
	}
	public void setCt_id(String ct_id) {
		this.ct_id = ct_id;
	}
	public String getCt_name() {
		return ct_name;
	}
	public void setCt_name(String ct_name) {
		this.ct_name = ct_name;
	}
	@Override
	public String toString() {
		return "Commoditytype [ct_id=" + ct_id + ", ct_name=" + ct_name + "]";
	}	
}
  • 対应的XML文件
<?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">
  
<mapper namespace="com.ishopn.model.CommoditytypeMapper">
  <select id="getCommoditytypeList" resultType="com.ishopn.model.Commoditytype">
    select * from commoditytype
  </select>
  
  <select id="getCommoditytypeById" resultType="com.ishopn.model.Commoditytype">
    select * from commoditytype where ct_id=#{ct_id}
  </select>
  
  <update id="uptCommoditytype" parameterType="String">
  	update commoditytype set ct_name=#{ct_name} where ct_id=#{ct_id}
  </update>
  
  <insert id="istCommoditytype">
  	insert into commoditytype values(#{ct_id},#{ct_name})
  </insert>
  
  <delete id="delCommoditytypeById">
  	delete from commoditytype where ct_id=#{ct_id}
  </delete>
</mapper>

namespace:声明该XML的命名空间,当你的namespace绑定之后,就可以不需要写接口的实现类
id属性是这个SQL语句的标识
resultType指定该SQL语句执行后的返回值类型
parameterType:当SQL语句需要传入参数的时候,指定传入参数的类型

  • 4.编写SqlSession工具类,方便获取实现类,类似于在MVC三层框架中的数据库工具类实现对session的获取,关闭
package com.ishopn.util;

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 SessionHelper {
	private static SqlSessionFactory sqlSessionFactory;
	
	static {
		try {
			String resource = "mybatis-config.xml";
			InputStream inputStream = Resources.getResourceAsStream(resource);
			sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	/*
	 * 获取session
	 */
	public static SqlSession getSession() {
		return sqlSessionFactory.openSession();
	}
	
	/*
	 * 关闭session
	 */
	public static void closeSession(SqlSession session) {
		if(session!=null) {
			session.close();
		}
	}
}

通过读取mybatis-config.xml文件来获取sqlSessionFactory对象,然后获取session对象

  • 5在测试类中使用sqlSessionFactory对象来获取session对象来执行SQL语句

import java.util.List;

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

import com.ishopn.model.Commoditytype;
import com.ishopn.util.SessionHelper;

public class CommoditytypeDemo {
	@Test
	public void getCommoditytypeList() {
		try {
		//通过SessionHelper这个工具类获取session对象
			SqlSession session = SessionHelper.getSession();
		//使用Session对象的selectList方法来获取SQL语句执行后的结果集	
			List<Commoditytype> ctList = session.selectList("com.ishopn.model.CommoditytypeMapper.getCommoditytypeList");
			System.out.println(ctList);
			//关闭session对象
			SessionHelper.closeSession(session);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

你可能感兴趣的:(Mybatis)