这篇文章给大家介绍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)。
在项目的根目录新建lib文件夹,用来存放jar文件
此配置文件主要是用 c3p0连接数据库的信息,修改其中的driverClass(连接驱动)、url、user以及密码。
注意:dirverClass是数据库连接驱动,不同版本,不同数据库连接驱动都不同,我用的是mysql5.7版本,命名必须是这个,不要问,问就是规定!!
此配置文件主要是日志的打印以及保存,找到<properties> </properties>标签,<property name="LOG_HOME"></property> (日志保存路径) <property name="FILE_NAME"></property>(当前项目名)。
在src根目录下新建一个mybatis-cofig.xml(名字随意)的配置文件
<settings>
<!-- 配置Log4j2 -->
<setting name="logImpl" value="LOG4J2"/>
</settings>
<!-- 配置MyBatista所需的数据源 -->
<environments default="myC3P0DataSource">
<!-- C3P0数据源 -->
<environment id="myC3P0DataSource">
<transactionManager type="JDBC"/>
<!-- new ComboPooledDataSource(),会默认加载c3p0.prperties配置文件 -->
<dataSource type="com.hsiao.factory.C3P0DataSource" />
</environment>
</environments>
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 + "]";
}
}
新建dao包-->新建teacherDao接口
-->在dao包中新建impl包
-->在impl中新建teacherDaoImpl实现teacherDao接口
<mappers>
<mapper resource="com/hsiao/entiy/TeacherVO.xml"/>
</mappers>
在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;
}
}
public static void main(String...args) {
SqlSession session=MybatisSessionFactory.getSession();
log.debug("获取Connection对象"+session.getConnection());
}
测试无异常在进行下一步。
<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>
<select id="selectAllTeacher" resultMap="teacherResult">
SELECT TID,TNAME,SUBJECT FROM TEACHER
</select>
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保持一致
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中如何搭建注解式就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/u/4125287/blog/3073058