Mybatis基本用法
搭建mybatis环境
1, 导入需要的jar包
mybatis-*.*.*.jar
ojdbc6.jar
2, 配置mybatis的总配置文件: mybatis-config.xml
配置根标签
<!-- 根标签 -->
<configuration>
<!--
引入属性文件
属性文件通常写数据库连接的信息
username(注意一个问题, 属性文件中不要单独写一个username)
password
url
driverClass
-->
<property resource="属性文件所在src下的位置" /> <!-- 或者直接定义属性值 -->
<properties>
<property name="jdbc.username" value="test" />
<property name="jdbc.password" value="test" />
<property name="jdbc.driverClassName" value="oracle.jdbc.OracleDriver" />
<property name="jdbc.url" value="jdbc:oracle:thin:@localhost:1521:orcl" />
</properties> <!-- 为实体类定义一个别名, 如果不定义别名, 在映射文件中就要写这个实体类的全路径名 -->
<typeAliases>
<!-- 这个写法取的别名是随意的, 可以自己任意定义 -->
<!-- <typeAlias type="类名的全路径名" alias="别名"></typeAlias> -->
<!-- 如果使用下面这个写法, 就是按照mybatis自己定义的规则, 这个包下的所有类的类名就是别名 -->
<package name="com.model"/>
<!-- 使用package标签实际是默认扫描model包下的所有的类, 如果在实体类的定义了注解@Alias(value = "..."), 则优先使用注解 -->
</typeAliases> <!-- 配置mybatis的运行环境们 -->
<environments default="所使用的环境的标签id">
<environment id="default">
<!--
配置事务管理器的类型
JDBC
MANAGED--(托管, 商业服务器上才有的功能, Tomcat没有)
-->
<transactionManager type="JDBC" />
<!--
POOLED(基于连接池的数据源)
UNPOOLED(使用普通的数据库连接)
JNDI(使用应用服务器上的JNDI连接配置数据源, 很少使用)
-->
<dataSource type="POOLED">
<property name="username" value="${属性文件中配置的信息}"></property>
<property name="password" value="${属性文件中配置的信息}"></property>
<property name="url" value="${属性文件中配置的信息}"></property>
<property name="driver" value="${属性文件中配置的信息}"></property>
</dataSource>
</envirment>
</environments>
<mappers>
<!-- 挨个写明每个映射文件所在的位置 -->
<mapper resource="src下mapper映射文件的全路径名">
<!-- 写明每个映射文件所对应的接口的限定名, package引入的文件一定是接口,
所以如果使用这种方式, 必须是使用接口对应映射文件的方式 -->
<package name="接口所在的包" />
</mappers>
</configuration>
3, 新建每个实体类的映射文件...Mapper.xml
<!-- 定义每个实体类的映射文件 -->
<mapper namespace="唯一的id / 接口的全路径名">
<select id="被调用的id(唯一) / 需要执行的方法名"></select>
<insert></insert>
<update></update>
<delete></delete>
</mapper>
resultType: 类的全路径名 / 定义好的别名
resultMap: 指定返回结果的集合
parameterType: 指的是, 进行查询的时候所需要的参数类型
4, 写测试类运行mybatis
MybatisUtil
两步:
1, 构建SqlSessionFactory
InputStream in = Resources.getResourceAsStream("总配置文件所在的src下的路径");
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(in);
2, 构建SqlSession(注意SqlSession不能以一个class成员变量的身份被返回)
SqlSession ss = ssf.openSession();
3, 直接运行
a: 直接运行映射文件中的sql语句
ss.select...
ss.insert...
ss.update...
ss.delete...
b: 使用接口映射配置文件
ss.getMapper(接口类名.class);
调用接口的方法 一对一, 一对多查询
1, 一对一
映射文件中写明resultMap, 这时sql语句一定用关联查询多个表的内容
<resultMap type="类名" id="...">
<id property="实体类中成员变量的名字" column="查询结果中的列名" />
<result property="成员变量的名字" column="查询结果中的列名" />
...
<!-- 对象级联 -->
<result property="major.majorid" column="查询结果中的列名" />
<result property="major.mname" column="查询结果中的列名" />
</resultMap>
<resultMap type="类名" id="...">
<id property="实体类中成员变量的名字" column="查询结果中的列名" />
<result property="成员变量的名字" column="查询结果中的列名" />
...
<!-- 对象级联 -->
<association property="major" resultMap="定义好的另一个resultMap" />
</resultMap>
<resultMap type="类名" id="...">
<association property="属性名" select="其他映射文件中的查询语句" />
</resultMap>
2, 一对多
<resultMap type="类名" id="...">
<collection property="students" select="其他映射文件中的查询语句" />
</resultMap>
动态sql语句
1, <if>条件
<if test="key!=null">
拼接sql语句
</if>
2, <choose><when><otherwise>
<choose>
<when test="key=='value'">
拼接sql语句
</when>
<when test="key=='value'">
拼接sql语句
</when>
<otherwise>
拼接sql语句
</otherwise>
</choose>
3, <where>
自动添加where关键字
如果where子句第一句中有 or 或者 and 则删除第一个
4, <trim>
功能与<where>类似, 并且提供了前缀, 后缀的添加, 更加灵活
5, <foreach>
用来遍历传入的集合参数
item(定义集合中每个对象的名字),
collection(集合的对象的名字),
open(定义开始的字符),
close(定义结束的字符),
separator(定义分割的字符)
6, <set>
主要用于update
自动加上set关键字
自动剔除最后一个 ","
7, <sql>
经常用于一些常用或者固定的语句, 在外面定义一个语句, 在各种标签中引入
使用include, 相当于直接写在上面
8, <selectKey>
用于不支持自增长主键的数据库, 尽量避免写这个东西 < < 小于号
> > 大于号
& & 和
' ’ 单引号
" " 双引号 <![CDATA[]]>
Mybatis基本用法的更多相关文章
- Mybatis基本用法--下
Mybatis基本用法--下 第七部分 mybatis-spring-boot-starter 官网:http://www.mybatis.org/spring-boot-starter/mybati ...
- Mybatis基本用法--中
Mybatis基本用法--中 第四部分 动态 SQL 动态 SQL 元素和使用 JSTL 或其他类似基于 XML 的文本处理器相似.MyBatis 采用功能强大的基于 OGNL 的表达式来消除其他元素 ...
- Mybatis基本用法--上
Mybatis基本用法--上 本文只是为自己查漏补缺.全面的请看官方文档,支持中英文 原理参考:http://blog.csdn.net/luanlouis/article/details/40422 ...
- SpringBoot示例教程(一)MySQL与Mybatis基础用法
示例需求 在Springboot2框架中,使用Mysql和Mybatis功能:1. Mysql+Datasource集成2. Mybatis+XML用法详解 数据库准备 采用了Oracle中的scot ...
- mybatis简单用法
1.resultType 和 resultMap 引言: MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表 ...
- mybatis generator 用法
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration ...
- mybatis like用法
针对不同的数据库,like的用法是不一样的,现在具体来说一下 1,SQL SERVER SELECT * FROM user WHERE name like '%'+#{name}+'%' 2,Ora ...
- MyBatis基础用法(一)
<select id="getErrorTimes" resultType="Integer"> SELECT ErrorTimes FROM `e ...
- Example [mybatis] 的用法
example.or() .andField1EqualTo() .andField2IsNull(); example.or() .andField3NotEqualTo() .andField4I ...
随机推荐
- sap.ui.require in SAP UI5 and require in nodejs
UI5 例如我需要在controller的onShowHello里通过MessageToast弹一个消息显示在UI上, 我需要先定义我自己的controller,该controller extend自 ...
- httpclient 中post请求重定向
背景:使用httpclient 的post请求进行登录,需要重定向登录,请求重定向后的地址 在httpclient中post请求不像get请求自己可以重定向,实现方式是 判断post请求返回码是否是3 ...
- ABI and ISA
ABI定义了如何使用ISA. ISA定义了机器码的使用规则. http://www.delorie.com/gnu/docs/gmp/gmp_6.html ABI and ISA ABI (Appli ...
- DP找最优配置,(POJ1018)
题目链接:http://poj.org/problem?id=1018 这个DP,我的头都快晕了. dp[i][j]表示取到第i个设备,宽带为j时的最小价格. 状态转移方程: dp[i][k]=min ...
- Netbackup:nbu常见错误及故障解决
Veritas Netbackup 提供了强大的故障响应功能, 能够有效及时的处理 各种备份故障.主要有备份状态码(status) .错误信息.报告信息及调试日志.下面我们主要针对备份状态码讲解下各种 ...
- 【转】普及一下ARM和X86的区别,鉴于ATOM已经入驻手机,AMD也会…
这里简单来谈一下,ARM和X86之间为什么不太具有可比性的问题.要搞清楚这个问题首先要明白什么是架构,之前也有很多人提到了架构不同,但架构是什么意思?它是一个比较抽象的概念,不太容易用几句话就解释清楚 ...
- chapter1-printf.py
#!/usr/bin/env python # _*_ coding:utf-8 _*_ from ctypes import * libc = CDLL("libc.so.6") ...
- CCF CSP 201712-2 游戏
题目链接:http://118.190.20.162/view.page?gpid=T67 问题描述 有n个小朋友围成一圈玩游戏,小朋友从1至n编号,2号小朋友坐在1号小朋友的顺时针方向,3号小朋友坐 ...
- GNOME keyring [(null)] 的密码:
在ubuntu下执行svn checkout命令时,总是报下面的错误: GNOME keyring [(null)] 的密码:svn: 方法 OPTIONS 失败于 “http://xxxxxxxx/ ...
- 第30章 ADC—电压采集—零死角玩转STM32-F429系列
第30章 ADC—电压采集 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fireg ...