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>
项目目录结构:
相关文章推荐
- 【Mybatis】使用java方式实现SM框架整合
- java application 应用程序 使用JDBC proxool 两种方式连接数据库 测试程序代码
- java使用JDBC连接数据库的几种方式
- java 演示使用jdbc-odbc桥连接的方式操作数据库 向数据库中添加数据
- 01-JDBC概念--JDBC(Java Database Connectivity:Java数据库连接):使用jdbc实现Java与数据库MySQL连接
- java使用jdbc方式连接数据库实例
- java oracle thin 和 oci 连接方式实现多数据库的故障切换
- Java学习笔记—使用dbcp2数据库连接池方式连接测试数据库
- 使用JFinal框架连接数据库,实现注册、登录功能
- #.Java使用JDBC连接数据库的三种方式
- Java使用JDBC连接数据库的实现方法
- Spring 使用JdbcTemPlate的方式实现与数据库的连接
- 通过代理类实现java连接数据库(使用dao层操作数据)实例分享
- 使用JFinal框架连接数据库,实现注册、登录功能
- JAVAWEB开发之SpringMVC详解(一)——SpringMVC的框架原理、架构简介、与mybatis整合和注解方式的使用、
- 使用纯java jdbc驱动程序实现数据库的连接
- Java使用JDBC连接数据库的实现方法
- Java使用JDBC方式连接数据库
- java oracle thin 和 oci 连接方式实现多数据库的故障切换
- java使用jdbc ipv6方式连接数据库