温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Mybatis中如何搭建注解式

发布时间:2021-07-30 14:31:01 来源:亿速云 阅读:126 作者:Leah 栏目:大数据

这篇文章给大家介绍Mybatis中如何搭建注解式,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

# 一.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文件Mybatis中如何搭建注解式

三.准备配置文件

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

测试无异常在进行下一步。Mybatis中如何搭建注解式

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中如何搭建注解式

关于Mybatis中如何搭建注解式就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI