溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Mybatis中如何搭建注解式

發(fā)布時(shí)間:2021-07-30 14:31:01 來源:億速云 閱讀:123 作者:Leah 欄目:大數(shù)據(jù)

這篇文章給大家介紹Mybatis中如何搭建注解式,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

# 一.Mybatis框架簡介

MyBatis 本是apache的一個(gè)開源項(xiàng)目iBatis, 2010年這個(gè)項(xiàng)目由apache software foundation 遷移到了google code,并且改名為MyBatis 。2013年11月遷移到Github。

iBATIS一詞來源于“internet”和“abatis”的組合,是一個(gè)基于Java的持久層框架。iBATIS提供的持久層框架包括SQL Maps和Data Access Objects(DAOs)。

二.準(zhǔn)備Jar包

在項(xiàng)目的根目錄新建lib文件夾,用來存放jar文件Mybatis中如何搭建注解式

三.準(zhǔn)備配置文件

1.c3p0.propertis

此配置文件主要是用 c3p0連接數(shù)據(jù)庫的信息,修改其中的driverClass(連接驅(qū)動(dòng))、url、user以及密碼。

注意:dirverClass是數(shù)據(jù)庫連接驅(qū)動(dòng),不同版本,不同數(shù)據(jù)庫連接驅(qū)動(dòng)都不同,我用的是mysql5.7版本,命名必須是這個(gè),不要問,問就是規(guī)定?。?/p>

2.log4j2.xml

此配置文件主要是日志的打印以及保存,找到<properties> </properties>標(biāo)簽,<property name="LOG_HOME"></property> (日志保存路徑) <property name="FILE_NAME"></property>(當(dāng)前項(xiàng)目名)。

四.創(chuàng)建Mybatis核心配置文件

在src根目錄下新建一個(gè)mybatis-cofig.xml(名字隨意)的配置文件

1.配置log4j

<settings>
		<!-- 配置Log4j2 -->
		<setting name="logImpl" value="LOG4J2"/>
</settings>

2.配置c3p0數(shù)據(jù)源

<!-- 配置MyBatista所需的數(shù)據(jù)源 -->
<environments default="myC3P0DataSource">
	<!-- C3P0數(shù)據(jù)源 -->
	<environment id="myC3P0DataSource">
		<transactionManager type="JDBC"/>
    <!-- new ComboPooledDataSource(),會(huì)默認(rèn)加載c3p0.prperties配置文件 -->
		<dataSource type="com.hsiao.factory.C3P0DataSource" />
	</environment>
</environments>

3.創(chuàng)建實(shí)體類

Teacher實(shí)體類

package com.hsiao.entiy;

import java.util.Date;

public class Student {
	private Long sid;
	private String sname;
	private Date sdate;
	private Long tid;
	
	private  Teacher tvo;

	public Student() {
		super();
		// TODO Auto-generated constructor stub
	}

	public Student(Long sid, String sname, Date sdate, Long tid, Teacher tvo) {
		super();
		this.sid = sid;
		this.sname = sname;
		this.sdate = sdate;
		this.tid = tid;
		this.tvo = tvo;
	}

	public Long getSid() {
		return sid;
	}

	public void setSid(Long sid) {
		this.sid = sid;
	}

	public String getSname() {
		return sname;
	}

	public void setSname(String sname) {
		this.sname = sname;
	}

	public Date getSdate() {
		return sdate;
	}

	public void setSdate(Date sdate) {
		this.sdate = sdate;
	}

	public Long getTid() {
		return tid;
	}

	public void setTid(Long tid) {
		this.tid = tid;
	}

	public Teacher getTvo() {
		return tvo;
	}

	public void setTvo(Teacher tvo) {
		this.tvo = tvo;
	}

	@Override
	public String toString() {
		return "Student [sid=" + sid + ", sname=" + sname + ", sdate=" + sdate + ", tid=" + tid + ", tvo=" + tvo + "]";
	}
	
}

4.創(chuàng)建dao層以及實(shí)現(xiàn)類

新建dao包-->新建teacherDao接口

-->在dao包中新建impl包

-->在impl中新建teacherDaoImpl實(shí)現(xiàn)teacherDao接口

5.在核心配置文件中加入實(shí)體類的映射

<mappers>
    <mapper resource="com/hsiao/entiy/TeacherVO.xml"/>
</mappers>

6.創(chuàng)建session工廠

在factory包中新建一個(gè)MybatisSessionFactory工廠類

package com.hsiao.factory;

import java.io.InputStream;

import org.apache.ibatis.session.ExecutorType;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;


public class MybatisSessionFactory {
	
	//創(chuàng)建日志追蹤器
	private static Logger log=LogManager.getLogger();
	
	private static SqlSessionFactory sqlSessionFactory;
	
	/**
	 * 加載mybatis-config.xml配置文件
	 */
	static {
		InputStream ins= 		MybatisSessionFactory.class.getClass().getResourceAsStream("/mybatis-config.xml");
	 	sqlSessionFactory=new SqlSessionFactoryBuilder().build(ins);
	}
	
	public static SqlSession getSession() {
		if(sqlSessionFactory==null) {
			throw new NullPointerException("session 工廠創(chuàng)建失??!");
		}
		//設(shè)置BATCH 批處理模式  fasle代表是事務(wù)非自動(dòng)提交 
		SqlSession session=sqlSessionFactory.openSession(ExecutorType.BATCH,false);
		return session;
	}
}

7.測試獲取連接

public static void main(String...args) {
		SqlSession session=MybatisSessionFactory.getSession();
		log.debug("獲取Connection對象"+session.getConnection());
	}

測試無異常在進(jìn)行下一步。Mybatis中如何搭建注解式

8.在TeacherVO.xml中封裝結(jié)果集

<resultMap id="teacherResult" type="com.hsiao.entiy.Teacher">
  <!-- column列名 jdbcType數(shù)據(jù)庫類型 property數(shù)據(jù)庫字段對應(yīng)實(shí)體類屬性名 -->
     <id column="tid" jdbcType="BIGINT" property="tid"/>
     <result column="tname" jdbcType="VARCHAR" property="tname"/>
     <result column="subject" jdbcType="VARCHAR" property="subject"/>
</resultMap>

9.在TeacherVO.xml中寫sql語句標(biāo)簽

<select id="selectAllTeacher" resultMap="teacherResult">
		SELECT TID,TNAME,SUBJECT FROM TEACHER
</select>

10.dao層寫抽象方法

package com.hsiao.dao;

import com.hsiao.entiy.Teacher;

import java.util.List;

public interface TeacherDao {
    public List<Teacher> selectAllTeacher();
}

注意:dao層方法的方法名與對象映射文件(TeacherVO.xml)的select標(biāo)簽的id保持一致

11.dao層的實(shí)現(xiàn)類寫方法并測試

package com.hsiao.dao.impl;

import com.hsiao.dao.TeacherDao;
import com.hsiao.entiy.Teacher;
import com.hsiao.factory.MybatisSessionFactory;
import org.apache.ibatis.session.SqlSession;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import java.util.List;

public class TeacherDaoImpl implements TeacherDao {

    private static Logger log= LogManager.getLogger();

    @Override
    public List<Teacher> selectAllTeacher() {
        SqlSession session= MybatisSessionFactory.getSession();
        List<Teacher> list=  session.selectList("selectAllTeacher");
        session.close();
        return list;
    }

    public static void main(String[] args) {
        TeacherDaoImpl dao=new TeacherDaoImpl();
        List<Teacher> list=dao.selectAllTeacher();
        list.forEach((m)->log.debug(m));
    }
}

Mybatis中如何搭建注解式

關(guān)于Mybatis中如何搭建注解式就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI