Mybatis注解式简单搭建

本文详细介绍MyBatis框架的搭建过程,从准备Jar包、配置文件到创建实体类、DAO层,再到测试连接和结果集映射,一步步引导读者完成MyBatis框架的搭建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# 一.Mybatis框架简介

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。

iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)。

二.准备Jar包

在项目的根目录新建lib文件夹,用来存放jar文件

三.准备配置文件

1.c3p0.propertis

此配置文件主要是用 c3p0连接数据库的信息,修改其中的driverClass(连接驱动)、url、user以及密码。

注意:dirverClass是数据库连接驱动,不同版本,不同数据库连接驱动都不同,我用的是mysql5.7版本,命名必须是这个,不要问,问就是规定!!

2.log4j2.xml

此配置文件主要是日志的打印以及保存,找到<properties> </properties>标签,<property name="LOG_HOME"></property> (日志保存路径) <property name="FILE_NAME"></property>(当前项目名)。

四.创建Mybatis核心配置文件

在src根目录下新建一个mybatis-cofig.xml(名字随意)的配置文件

1.配置log4j

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




2.配置c3p0数据源

<!-- 配置MyBatista所需的数据源 -->
<environments default="myC3P0DataSource">
	<!-- C3P0数据源 -->
	<environment id="myC3P0DataSource">
		<transactionManager type="JDBC"/>
    <!-- new ComboPooledDataSource(),会默认加载c3p0.prperties配置文件 -->
		<dataSource type="com.hsiao.factory.C3P0DataSource" />
	</environment>
</environments>




3.创建实体类

Teacher实体类

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.创建dao层以及实现类

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

-->在dao包中新建impl包

-->在impl中新建teacherDaoImpl实现teacherDao接口

5.在核心配置文件中加入实体类的映射

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




6.创建session工厂

在factory包中新建一个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 {
	
	//创建日志追踪器
	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 工厂创建失败!");
		}
		//设置BATCH 批处理模式  fasle代表是事务非自动提交 
		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());
	}




测试无异常在进行下一步。

8.在TeacherVO.xml中封装结果集

<resultMap id="teacherResult" type="com.hsiao.entiy.Teacher">
  <!-- column列名 jdbcType数据库类型 property数据库字段对应实体类属性名 -->
     <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语句标签

<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标签的id保持一致

11.dao层的实现类写方法并测试

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框架搭建完成。最后附上项目结构图(开发工具IDEA 2019):

项目结构图

转载于:https://my.oschina.net/u/4125287/blog/3073058

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值