深入浅出mybatis之入门使用

写在前面
mybatis是一个持久层框架,可以支持SQL定制和存储过程,实现数据库记录到Java POJO对象之间的映射。
所以说,mybatis是一个ORM框架。
这个ORM可以通过2种方式实现:xml配置,java注解。
使用mybatis可以大大提高数据库应用程序的编写效率,避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。
既然mybatis有这么强大的功能,那么如何使用它呢?以及mybatis具体有哪些核心元素和特性呢?
如何使用mybatis
mybatis主要是解决数据库应用程序的中POJO对象与数据库记录之前的映射关系的。
也就是说,只要是涉及关系型数据库的应用编程,都可以使用mybatis作为持久层开发组件。
而多数与数据库打交道的应用程序通常都是B/S架构,如Java Web应用程序;另外,Spring作为Java世界中非常流行的容器框架,所以通常mybatis存在2种应用场景:
其一:在Java Web应用中与Spring框架集成在一起使用,将mybatis中的相关组件交给Spring进行管理;
其二:在普通的数据库应用程序中使用mybatis,此时mybatis的相应组件需要由程序员自己管理;
在使用mybatis之前,需要对其进行一些基础配置,具体包括:
1.properties 属性
2.settings 设置
3.typeAliases 类型别名
4.typeHandlers 类型处理器
5.objectFactory 对象工厂
6.plugins 插件
7.environments 环境
----environment 环境变量
--------transactionManager 事务管理器
--------dataSource
8.databaseIdProvider 数据库厂商标识
9.mappers 映射器
如上这些属性,有些是必须明确配置的,有些可以不用配置,mybatis已经提供了默认值。
具体来讲,environments和mappers是必须配置的,其他的可以不用明确配置。
举个例子: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>
<properties resource="jdbc.properties"></properties>
<settings>
<!-- 指定 MyBatis 所用日志的具体实现,未指定时将自动查找。 -->
<setting name="logImpl" value="LOG4J" />
<!-- 是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN 到经典 Java 属性名 aColumn
的类似映射。 -->
<setting name="mapUnderscoreToCamelCase" value="false" />
</settings>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<!-- 使用自定义的事务管理器: 自动提交事务 -->
<!-- <transactionManager type="org.chench.test.mybatis.transaction.MyJdbcTransactionFactory" /> -->
<dataSource type="POOLED">
<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<mappers>
<!-- 将SQL语句写在xml文件中 -->
<mapper resource="org/chench/test/mybatis/mapper/TestMapper.xml" />
<!-- 将SQL语句写在Java代码中, 这里有2种方式: -->
<!-- 方式一: 注册每一个映射器接口,需要明确注册每一个接口 -->
<!-- 方式二: 指定映射器接口所在包,则该包下的所有映射器接口都会被注册 -->
<!-- <mapper class="org.chench.test.mybatis.mapper.impl.TestMapper" /> -->
<package name="org.chench.test.mybatis.mapper.impl"/>
</mappers>
</configuration>
详细使用mybatis示例:https://gitee.com/cchanghui/test-mybatis.git
mybatis核心组件和特性
1.xml映射文件
2.动态SQL
3.映射器注解:在mybatis3上才可用
4.SQL语句构建器
【参考】
http://www.mybatis.org/mybatis-3/zh/index.html
深入浅出mybatis之入门使用的更多相关文章
- 深入浅出Mybatis系列(七)---mapper映射文件配置之insert、update、delete
上篇文章<深入浅出Mybatis系列(六)---objectFactory.plugins.mappers简介与配置>简单地给mybatis的配置画上了一个句号.那么从本篇文章开始,将会介 ...
- 深入浅出Mybatis系列(二)---配置简介(mybatis源码篇)
上篇文章<深入浅出Mybatis系列(一)---Mybatis入门>, 写了一个Demo简单体现了一下Mybatis的流程.本次,将简单介绍一下Mybatis的配置文件: 上次例子中,我们 ...
- 深入浅出Mybatis系列(二)---配置简介(mybatis源码篇)[转]
上篇文章<深入浅出Mybatis系列(一)---Mybatis入门>, 写了一个Demo简单体现了一下Mybatis的流程.本次,将简单介绍一下Mybatis的配置文件: 上次例子中,我们 ...
- 深入浅出Mybatis系列七-mapper映射文件配置之insert、update、delete
注:本文转载自南轲梦 注:博主 Chloneda:个人博客 | 博客园 | Github | Gitee | 知乎 上篇文章<深入浅出Mybatis系列(六)---objectFactory.p ...
- 深入浅出Mybatis系列二-配置简介(mybatis源码篇)
注:本文转载自南轲梦 注:博主 Chloneda:个人博客 | 博客园 | Github | Gitee | 知乎 上篇文章<深入浅出Mybatis系列(一)---Mybatis入门>, ...
- 深入浅出Mybatis系列(三)---配置简介(mybatis源码篇)
上篇文章<深入浅出Mybatis系列(二)---Mybatis入门>写了一个Demo简单体现了一下Mybatis的流程.本次,将简单介绍一下Mybatis的配置文件: 上次例子中,我们以 ...
- MyBatis学习总结(一)——MyBatis快速入门
一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...
- MyBatis快速入门
一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...
- MyBatis学习总结(一)——MyBatis快速入门(转载)
本文转载自http://www.cnblogs.com/jpf-java/p/6013537.html MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了 ...
随机推荐
- BZOJ 3514: Codechef MARCH14 GERALD07加强版(LCT + 主席树)
题意 \(N\) 个点 \(M\) 条边的无向图,询问保留图中编号在 \([l,r]\) 的边的时候图中的联通块个数. \(K\) 次询问强制在线. \(1\le N,M,K \le 200,000\ ...
- post提交的数据几种编码格式
1.背景介绍 HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS.GET.HEAD.POST.PUT.DELETE.TRACE.CONNECT 这几种.其中 POST 一般用来向服务端 ...
- HR_Jumping on the Clouds
1.没有考虑i+2越界的问题 2.没有考虑结尾三个零导致 -5 3.没有考虑len(c)<2 导致 -5 #!/bin/python3 import math import os import ...
- django 模板语言
母版与继承: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
- centos7下利用httpd2.4配置svn并使用Ldap用户认证
应用场景:Windows下有AD活动目录,类Unix系统下有Ldap,在运维开发工具平台逐步丰富的现在,统一用户管理大大便捷了管理人员. 其中不乏经典版本控制管理工具svn,与Ldap组合的用户认证方 ...
- 两数之和 II - 输入有序数组
题目描述 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数. 函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2. 说明: 返 ...
- DNA Consensus String
题目(中英对照): DNA (Deoxyribonucleic Acid) is the molecule which contains the genetic instructions. It co ...
- C语言中的类型转换——将字符串s转换为整数型(int)类型
在讲类型转换之前,我们先要理解下C语言中单引号和双引号的区别. 先讲双引号,双引号就是字符串,我们要证实我们的想法,我选择写一段代码看看开: #include <stdio.h> int ...
- configure: error: no acceptable C compiler found in $PATH 问题解决
解决办法: 安装GCC软件套件 [root@localhost ~]# yum install gccLoaded plugins: fastestmirrorLoading mirror speed ...
- 洛谷P1117 优秀的拆分
题意:求一个字符串中有多少形如AABB的子串. 解:嗯...我首先极度SB的想了一个后缀自动机套线段树启发式合并的做法,想必会TLE. 然后跑去看题解,发现实在是妙不可言... 显然要对每个位置求出向 ...