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目录下 下面就演示如 ...
随机推荐
- MVC 中aspx的增删改查
先看总体结构 LInQ #pragma warning disable 1591 //--------------------------------------------------------- ...
- 从零开始学习jQuery(转)
本系列文章导航 从零开始学习jQuery (一) 开天辟地入门篇 从零开始学习jQuery (二) 万能的选择器 从零开始学习jQuery (三) 管理jQuery包装集 从零开始学习jQuery ( ...
- c++实现蛇形矩阵总结
蛇形矩阵,百度了一下,是这么一个东西: 像一条蛇一样依次递增. 我想,竟然做了螺旋矩阵,那做一下这个吧.在之前的螺旋矩阵的main函数基础上,写个函数接口就行了,这一次做的很快,但是这个矩阵感觉比螺旋 ...
- php进制转换函数
1 十进制(decimal system)转换函数 ① 十进制转二进制 string decbin(int number). 参数为一个十进制整型数字,不是整型数字会自动转为整型数字,如'3'转为3 ...
- Java开发中经典的小实例-(字符串倒序输出)
public class Test12 { public static void main(String[] args) { // TODO Auto-generated meth ...
- 【java】定时器
总结 1.执行计划的任务放在TimerTask的子类中,由Timer进行该任务. 2.创建一个Timer就是启动一个新的线程,直至Timer里的任务执行完毕,才会结束.希望创建的线程为守护线程,则创建 ...
- C#位运算讲解与示例2
在C#中可以对整型运算对象按位进行逻辑运算.按位进行逻辑运算的意义是:依次取被运算对象的每个位,进行逻辑运算,每个位的逻辑运算结果是结果值的每个位.C#支持的位逻辑运算符如表2.9所示. 运算符号 意 ...
- Oracle PL/SQL实战代码下载
最近在学习PL/SQL编程,算是一个进阶吧,书没带光盘,所以按照书中的地址去下载样例,无法下载,到图灵官网找到了源代码下载地址,无法下载的留邮箱,我发给大家 下载地址: http://www.itur ...
- TestLink
TestLink的主要功能包括: 测试需求管理 测试用例管理 测试用例对测试需求的覆盖管理 测试计划的制定 测试用例的执行 大量测试数据的度量和统计功能 TestLink的主要特色包括: 支持多产品或 ...
- Centos 关闭后台进程 .sh 等
命令后加 & 符号可以让其在后台运行 如: node app.js & 想要关闭分两步: ps aux | grep app.js 查看app.js 所运行的进程号 kill 进程号 ...