您的位置:首页 > 编程语言 > Java开发

java连接数据库方式(二):单独使用MyBatis 框架实现

2017-11-05 14:06 856 查看

在没有与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(pa
4000
th);
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>


项目目录结构:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: