Mybatis开篇以及配置教程
MyBatis来源~:
MyBatis本是apache的一个开源的项目,原来称为iBatis,2010年这个项目由apache softwarefoundation迁移到了google code,并改名为MyBatis。MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久性框架,是一个SQL映射框架。MyBatis消除了几乎所有的JDBC代码。MyBatis使用简单的XML或注解用于配置和映射,将接口和JavaPOJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录。简单地说,MyBatis将SQL语句从程序里剥离出来,放到配置文件,并将查询结果和持久化类的属性通过配置文件做了映射,相对于HibernateORM框架,它属于一种“半自动化”的ORM实现!
MyBatis的优点以及使用场合!!
MyBatis小巧,简单易学,通过文档和源代码可以比较轻松掌握它的设计思路以及实现。其优点如下:
(1)简单且功能强大!通过SQL映射文件和SqlSession能够实现数据持久层的功能,与JDBC相比减少很多代码量!!
(2)开发猿能够完全为所欲为的控制所执行的SQL语句,尤其适用多表复杂查询!
(3)容易维护和修改。SQL语句写在了配置文件中,只要修改配置文件即可!
其缺点如下:
MyBatis属于半自动化框架的ORM,需要开发人员掌握SQL语句的编写。由于要写SQL语句,不同的数据库要重新修改SQL,因此MyBatis的数据库移植性不好。
MyBatis的适用场合:
如果不需要太多复杂的功能,而需要一个足够灵活的DAO层解决方案,或者对性能的要求很高,那么我介意使用MyBatis!
那么既然我们了解了它的适用场合也就应该了解一下它的不适用哪些场合:
(1)当希望对象的持久化对应用程序完全透明时,可以使用对象/映射方案,如hibernate。
(2)当数据库有移植需求,或者需要支持多种数据库时不要使用MyBatis。
(3)当应用程序需要完全动态的SQL时,如查询的字段都需要动态生成时不要使用MyBatis。
(4)当没有使用关系数据库时,或者使用的不是真正的关系数据库时不要使用MyBatis。
**************************************************************************************************************************
原理性的东西我们就介绍到这里吧,下面我们来使用MyBatis实现对数据库中的部门表进行增, 删, 改, 查;
第一步准备如下jar包!(jar 包下载地址我们可以去MyBatis的官网下载http://code.goole.com/p/mybatis这里我们推荐下载mybatis-3.2.2.zip)

第二步我们来编写与数据库交互的配置文件(名称可以取任意值,因为我们是专业的所以这里我们将其命名为mybatis-config.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">
<!-- 事务策略是JDBC -->
<transactionManager type="JDBC" />
<!-- 数据源的方式 POOLED -->
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" />
<property name="username" value="orcl" />
<property name="password" value="orcl" />
</dataSource>
</environment> </environments> <!--映射文件:描述某个实体和数据库表的对应关系 -->
<mappers>
<mapper resource="cn/happy/entity/Dept.xml" />
</mappers>
</configuration>
注意!这里要讲一下其中的集合常用的元素作用:
(1)environments元素:用于配置多个数据环境,这样可以映射多个数据库信息。采用default来指定默认使用哪个数据库环境。environment则是每个数据库环境的具体配置,包括连接信息和事务管理信息。
在MyBatis中有两种事务管理器类型(type="[JDBC|MANAGED]"):
JDBC:直接使用了JDBC控制事务。它依赖于从数据源得到的连接来管理事务范围。
MANAGED:MyBatis自己不负责控制事务,它会让容器来管理事务的整个生命周期(如通过Spring或JavaEE应用服务器)。
数据源类型有三种:UNPOOLED, POOLED, JNDI。
UNPOOLED:这个数据源的实现是每次被请求时简单打开和关闭连接。它有一点慢,这是对简单应用程序的一个很好选择,因为它不需要及时的连接。
POOLED:采用连接池以避免创建新的连接实例时必要的初始连接和认证时间。这是一种当前Web应用程序快速响应请求的很流行的方法。
JNDI:这个数据源的实现是为了使用如Spring或应用服务器这类的容器。容器可以集中或在外部配置数据源,MyBatis通过JNDI获取数据源。
(2)mappers元素:包含所有mapper的列表,告诉MyBatis到哪里去找SQL语句。Mapper主要是定义SQL映射文件。
第三步我们需要配置SQL映射文件,命名规范建议实体类名加Mapper.xml后缀这里我将其命名为DeptMapper.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="cn.happy.entity.Dept">
<!-- 1.1 查询所有部门信息 -->
<select id="selectAllDept" resultType="cn.happy.entity.Dept">
<!-- 这里写的SQL,而不是HQL,SQL中的表名是不区分大小写的 -->
select * from dept
</select> <!-- 1.1 添加部门信息 -->
<insert id="insertDept" parameterType="cn.happy.entity.Dept"> insert into dept values(SEQ_Num.nextval,#{deptName})
</insert> <!-- 1.2删除信息 -->
<delete id="deleteDept" parameterType="cn.happy.entity.Dept"> delete from dept where deptNo=#{deptNo}
</delete>
<!-- 1.3修改信息 -->
<update id="updateDept" parameterType="cn.happy.entity.Dept">
update dept set deptName=#{deptName} where deptNo=#{deptNo}
</update> <!-- 1.4 模糊查询 含有市场的部门信息 -->
<select id="likeDept" parameterType="cn.happy.entity.Dept" resultType="cn.happy.entity.Dept">
select * from dept where deptName like '%${deptName}%'
</select>
</mapper>
这样就配置完毕了,最后我们只需创建测试类测试即可
public class Mybatis_Test {
SqlSession session;
@Before
//将开启session的方法提出
public void mybefore() throws IOException{
Reader reader = Resources.getResourceAsReader("MyBatis-config.xml");
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory sql = builder.build(reader);
session = sql.openSession();
}
@Test
//查询所有部门的信息
public void selectAllDeptTest() throws IOException {
List<Dept> selectList = session.selectList("selectAllDept");
for (Dept dept : selectList) {
System.out.println(dept);
}
}
@Test
//根据编号修改部门信息
public void updateDeptTest(){
Dept dept=new Dept();
dept.setDeptNo(1);
dept.setDeptName("市场部");
int count = session.update("cn.happy.entity.Dept.updateDept",dept);
session.commit();
System.out.println(count+"update ok!");
session.close();
}
@Test
//删除一个部门
public void deleteDeptTest(){
Dept dept=new Dept();
dept.setDeptNo(1);
int count=session.delete("cn.happy.entity.Dept.deleteDept",dept);
session.commit();
System.out.println(count+"del ok!");
session.close();
}
@Test
//模糊查询部门信息 关键词为“财”
public void likeDeptTest(){
Dept dept=new Dept();
dept.setDeptName("财");
List<Dept> selectList=session.selectList("cn.happy.entity.Dept.likeDept",dept);
for (Dept dept2 : selectList) {
System.out.println(dept2);
}
}
@Test
//添加一个部门
public void insertDeptTest(){
Dept dept = new Dept();
dept.setDeptName("女神部");
int count = session.insert("cn.happy.entity.Dept.insertDept",dept);
session.commit();
System.out.println(count+"添加成功");
}
}
感兴趣的可以根据如上四个步骤去玩一把,下面内容会逐步更新!!!需要以上素材的可以私聊我 下期再见~~
Mybatis开篇以及配置教程的更多相关文章
- Spring+SpringMvc+Mybatis框架集成搭建教程
一.背景 最近有很多同学由于没有过SSM(Spring+SpringMvc+Mybatis , 以下简称SSM)框架的搭建的经历,所以在自己搭建SSM框架集成的时候,出现了这样或者那样的问题,很是苦恼 ...
- IDEA 初始配置教程
IDEA 初始配置教程 如果你是第一次使用 IDEA,或者对 IDEA 常用配置仍然不熟悉,那么本文就特别适合你. 本文只是根据我自己的使用经验来进行配置,不一定适合所有的情况,但是对你肯定会有帮助. ...
- Mybatis的核心配置
之前了解了Mybatis的基本用法,现在学习一下Mybatis框架中的核心对象以及映射文件和配置文件,来深入的了解这个框架. 1.Mybatis的核心对象 使用MyBatis框架时,主要涉及两个核心对 ...
- [转]Mybatis之TypeHandler使用教程
Mybatis之TypeHandler使用教程 https://blog.csdn.net/jokemqc/article/details/81326109 深入浅出Mybatis系列(五)---Ty ...
- (转)springMVC+mybatis+ehcache详细配置
一. Mybatis+Ehcache配置 为了提高MyBatis的性能,有时候我们需要加入缓存支持,目前用的比较多的缓存莫过于ehcache缓存了,ehcache性能强大,而且位各种应用都提供了解决方 ...
- MyBatis学习(一)、MyBatis简介与配置MyBatis+Spring+MySql
一.MyBatis简介与配置MyBatis+Spring+MySql 1.1MyBatis简介 MyBatis 是一个可以自定义SQL.存储过程和高级映射的持久层框架.MyBatis 摒除了大部分的J ...
- openvpn配置教程
openvpn配置教程 本文是为解决本地服器能从外网访问web页,从新改写(临摹) 烂泥:ubuntu 14.04搭建OpenVPN服务器这篇文章 腾讯云为服务器,本地服务器为客户端 一.服务器安装o ...
- VMware Workstation虚拟机中的Linux通过NAT模式共享上网配置教程
VMware Workstation虚拟机中的Linux通过NAT模式共享上网配置教程 在VMware Workstation虚拟机下面,Linux虚机要上网,一般是桥接模式,但我自己的电脑上网的环境 ...
- 百度在线编辑器UEditor(v1.3.6) .net环境下详细配置教程之更改图片和附件上传路径
本文是接上一篇博客,如果有疑问请先阅读上一篇:百度在线编辑器UEditor(v1.3.6) .net环境下详细配置教程 默认UEditor上传图片的路径是,编辑器包目录里面的net目录下 下面就演示如 ...
随机推荐
- CentOS 7下关于systemd的一些唠叨话二:systemd服务脚本的编写
CentOS 7继承了RHEL 7的新的特性,例如强大的systemd,而systemd的使用也使得以往系统服务的/etc/init.d的启动脚本的方式就此改变,也大幅提高了系统服务的运行效率.但服务 ...
- WPF上Arc Lisence的有关问题
WPF下Arc Lisence的问题代码如下: using System; using System.Collections.Generic; using System.Configuration; ...
- js的一些复习
JavaScript Js是一种直译式的脚本语言,是一种弱类型,基于对象的语言.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言 ...
- HDU-4528 小明系列故事——捉迷藏 BFS模拟
题意:链接 分析:每一个D或者是E点往四面延伸,并且赋一个特殊的值,能看到D点的点赋值为1,能看到E点的点赋值为1000,这是因为最多100步,因此最后可以根据除以1000和对1000取模来得出某个状 ...
- Windows下面安装easy_install报UnicodeDecodeError: 'ascii' codec can't decode byte解决方法
在运行python ez_setup.py install后, 发现是在下载并解压setuptools-2.1,并运行setup.py时出现如下错误: 提示D:\Python27\lib\mimety ...
- 程序设计入门——C语言 第4周编程练习 2 念整数(5分)
题目内容: 你的程序要读入一个整数,范围是[-100000,100000].然后,用汉语拼音将这个整数的每一位输出出来. 如输入1234,则输出: yi er san si 注意,每个字的拼音之间有一 ...
- iOS开发之滤镜的使用技巧(CoreImage)
一.滤镜的内容和效果是比较多并且复杂的 ,学习滤镜需要技巧 如下: 两个输出语句解决滤镜的属性选择问题: 1.查询效果分类中包含什么效果按住command 点击CIFilter 进入接口文件 找到第1 ...
- Python_Day1_基础1
一. Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为AB ...
- [原创] RT7 Lite win7旗舰版精简方案
[原创] RT7 Lite win7旗舰版精简方案 墨雪SEED 发表于 2016-1-26 21:23:54 https://www.itsk.com/thread-362912-1-5.html ...
- OPENGL学习之路(0)--安装
此次实验目的: 安装并且配置环境. 1 下载 https://www.opengl.org/ https://www.opengl.org/wiki/Getting_Started#Downloadi ...