在没有与spring 框架集成之前,MyBatis 并没有体现出它的强大,但是比起传统的JDBC还是有所优势的。(但是建议只用于学习mybatis)
1. MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
2. MyBatis 提供了动态sql语句
3. MyBatis 底层封装了JDBC,主要的功能就是实现数据库连接。支持定制化 SQL、存储过程以及高级映射, 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。
MyBatis 实现数据的连接,需要几个步骤:
首先封装个BaseMapper.java,相当于传统JDBC中的BaseDao.java
package com.meetingroom.mapper;
import java.io.IOException;
import java.io.Reader;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
/**
* MyBatis 的BaseDao
* @author LIU
* @version 1.0 2017-10-19
*/
public class BaseMapper {
/**
* 获取session
*TODO
*LIU
* @param path
* @return
*下午11:31:35
*/
public SqlSession getSession(String path){
Reader reader = null;
SqlSession session = null;
try {
reader = Resources.getResourceAsReader(path);
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(reader);
session = factory.openSession();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
reader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return session;
}
}
接着再编写对应的映射文件:MeetingMapper.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.meetingroom.mapper.MeetingMapper">
<select id="getAllCounts" resultType="int">
select count(id)
from meeting
</select>
<select id="showAll" parameterType="com.meetingroom.bean.Page" resultType="com.meetingroom.bean.Meeting">
select id,meeting_name as meetingName,meeting_order as meetingOrder,advance_name as advanceName
from meeting order by meeting_order desc
limit #{start},#{currCount}
</select>
<insert id="addMeeting" parameterType="com.meetingroom.bean.Meeting" >
insert into meeting(meeting_name,meeting_order,advance_name)
values(#{meetingName},#{meetingOrder},#{advanceName})
</insert>
</mapper>
往下是数据映射实现类:MeetingMapper.java
查询方法要与映射的id对应上,操作完成后必须要关闭session
package com.meetingroom.mapper.impl;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import com.meetingroom.bean.Meeting;
import com.meetingroom.bean.Page;
import com.meetingroom.mapper.BaseMapper;
import com.meetingroom.mapper.MeetingMapper;
/**
* 会议室数据映射实现
* @author LIU
* @version 1.0 2017-10-24
*/
public class MeetingMapperImpl extends BaseMapper implements MeetingMapper {
/**
* 配置文件路径
*/
String path = "mybatis.xml";
/**
* 获取所有记录数
*TODO
*LIU
* @return
*下午4:05:04
*/
@Override
public int getAllCounts() {
// TODO Auto-generated method stub
int result = 0;
SqlSession session = null;
try {
session = getSession(path);
result = session.selectOne("com.meetingroom.mapper.MeetingMapper.getAllCounts");
} catch (Exception e) {
e.printStackTrace();
}finally{
session.close();
}
return result;
}
/**
* 显示所有会议室信息
*TODO
*LIU
* @return
*下午4:05:43
*/
@Override
public List<Meeting> showAll(Page page) {
// TODO Auto-generated method stub
List<Meeting> meetingList = null;
SqlSession session = null;
try {
session = getSession(path);
meetingList = session.selectList("com.meetingroom.mapper.MeetingMapper.showAll", page);
} catch (Exception e) {
e.printStackTrace();
}finally{
session.close();
}
return meetingList;
}
/**
* 增加会议室信息
*TODO
*LIU
* @param meeting
* @return
*下午4:06:47
*/
@Override
public int addMeeting(Meeting meeting) {
// TODO Auto-generated method stub
int result = 0;
SqlSession session = null;
try {
session = getSession(path);
result = session.insert("com.meetingroom.mapper.MeetingMapper.addMeeting", meeting);
session.commit();
} catch (Exception e) {
session.rollback();
e.printStackTrace();
}finally{
session.close();
}
return result;
}
}
最后写mybatis.xml配置文件,配置数据源和映射源等信息
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql:///meetingroom"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/meetingroom/mapper/MeetingMapper.xml"/>
</mappers>
</configuration>
项目目录结构:

感谢您的阅读,欢迎参观我的个人网站:小嗨词典【 https://www.happydict.cn】
本文介绍如何使用MyBatis框架独立完成数据库连接操作,包括创建BaseMapper类、编写映射文件及配置文件等内容。
225

被折叠的 条评论
为什么被折叠?



