MyBatis Mapper 文件例子
转载:http://blog.csdn.net/ppby2002/article/details/20611737
<?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.lee.UserMapper">
<!--返回单一对象-->
<select id="selectName" resultType="com.lee.User">
<![CDATA[
select user_name userName from user_table where user_id = #{userId}
]]>
</select>
<!--返回结果格式 Map<字段名称,字段值>-->
<select id="selectByName" resultType="hashMap" parameterType="string">
<![CDATA[
SELECT * from user_table where user_name=#{userName}
]]>
</select>
<!--调用存储过程-->
<select id="selectUserFromStoreProcedure" statementType="CALLABLE">
<![CDATA[
{call my_pack.my_proc(
#{userId,mode=IN,jdbcType=VARCHAR,javaType=string},
#{userName,mode=OUT,jdbcType=FLOAT,javaType=string})}
]]>
</select>
<!--返回List<User>-->
<select id="selectUsers" resultType="com.lee.User">
<![CDATA[
select user_id userId, user_name userName from user_table
]]>
</select>
<!--重用sql-->
<sql id="subQuery">
<![CDATA[
WITH MY_SUB_QUERY as (
select 'lee' as user_name, '1' as user_id from dual
union select 'lee1' ,'2' from dual
)
]]>
</sql>
<!--动态sql-->
<sql id="selectOther">
<include refid="subQuery" />
<![CDATA[
SELECT t.other_id otherId, t.other_name otherName, t.other_flag otherFlag FROM OtherTable t
INNER JOIN MY_SUB_QUERY mapper ON mapper.user_id = t.user_id
]]>
<if test="filterFlag==true">
<![CDATA[
and t.other_flag = 'Y'
]]>
</if>
<!--
另一个if段
<if test="flag1==true">
...
</if>
-->
<!--
使用choose语句,flag1是从mapper方法中传递的参数,如 @Param("flag1") String flag1
<choose>
<when test="flag1 == 'Y'">
t1.flag1 AS flag
FROM table1 t1
</when>
<otherwise>
t2.flag2 AS flag
FROM table2 t2
</otherwise>
</choose>
-->
</sql>
<!--返回数字-->
<select id="selectCount" resultType="java.lang.Long">
<![CDATA[
SELECT count(*) FROM user_table
]]>
</select>
<!--Map参数, 格式Map<参数名称,参数值>-->
<select id="selectUser" parameterType="java.util.HashMap" resultType="com.lee.User">
<![CDATA[
SELECT user_id userId, user_name userName from user_table
where user_id=#{userId} and user_name = #{userName}
]]>
</select>
</mapper>
--------------------------------------------------这个分割线的作用是要显示下边的Java对象例子--------------------------------------------------
public class User {
private int userId;
private String userName;
public String getUserId() {return userId}
public void setUserId(int userId) {this.userId=userId}
public String getUserName() {return userName}
public void setUserName(String userName) {this.userName=userName}
}
--------------------------------------------------这个分割线的作用是要显示下边的Mapper对象例子--------------------------------------------------
@Repository
public interface UserMapper {
public User selectName(@Param("userId") String userId);
public List<Map<String,Object>> selectByName(@Param("userName")String userName);
<!--Map<字段名称,字段值>-->
public void selectUserFromStoreProcedure(Map<String,Object> map);
public List<User> selectUsers();
public OtherUser selectOther();
public int selectCount();
public User selectUser(Map<String,Object> map);
}
--------------------------------------------------这个分割线的作用是要显示另一些配置例子--------------------------------------------------
<!--用映射配置查询sql-->
<resultMap id="UserMap" type="com.lee.User">
<result column="user_id" property="userId"/>
<result column="user_name" property="userName"/>
</resultMap>
<select id="selectName" resultMap="UserMap">
<![CDATA[
select user_name from user_table where user_id = #{userId}
]]>
</select>
<!--重用映射配置并连接到其它结果集查询-->
<resultMap id="OtherUserMap" type="com.lee.OtherUser" extends="UserMap">
<!--多个查询条件用逗号隔开,如userId=user_id,userName=user_name-->
<collection property="ownedItems" select="selectItems" column="userId=user_id"/>
</resultMap>
<select id="selectItems" resultType="com.lee.UserItem">
SELECT * FROM user_item_table WHERE user_id = #{userId}
</select>
public class OtherUser extends User {
private List<UserItem> ownedItems;
public List<UserItem> getOwnedItems() {return ownedItems}
public void setOwnedItems(List<UserItem> userId) {this.ownedItems=ownedItems}
}
--------------------------------------------------这个分割线的作用是要显示另一个重用子查询配置例子--------------------------------------------------
<mapper namespace="mapper.namespace">
<sql id="selectTable1">
<![CDATA[
select f1, f2, f3 from table1 where 1=1
]]>
</sql>
<select id="getStandardAgents" resultMap="StandardAgent">
<include refid="mapper.namespace.selectTable1"/>
<![CDATA[
and f1 = 'abc'
]]>
</select>
</mapper>
--------------------------------------------------这个分割线的作用是要显示insert/update/delete配置例子--------------------------------------------------
<!--从Oracle序列中产生user_id, jdbcType=VARCHAR用于插入空值-->
<insert id="insertUser" parameterType="com.lee.User">
<selectKey keyProperty="user_id" resultType="string" order="BEFORE">
select db_seq.nextval as user_id from dual
</selectKey>
INSERT INTO
user_table(
user_id,
user_name,
) VALUES(
#{user_id},
#{user_name,jdbcType=VARCHAR}
)
</insert>
<update id="updateUser" parameterType="com.lee.User">
UPDATE user_table
SET user_name = #{userName,jdbcType=VARCHAR},
WHERE
user_id = #{userId}
</update>
<delete id="deleteUser" parameterType="com.lee.User">
DELETE user_table WHERE user_id = #{userId}
</delete>
MyBatis Mapper 文件例子的更多相关文章
- MyBatis mapper文件中的变量引用方式#{}与${}的差别
MyBatis mapper文件中的变量引用方式#{}与${}的差别 #{},和 ${}传参的区别如下:使用#传入参数是,sql语句解析是会加上"",当成字符串来解析,这样相比于$ ...
- [DB][mybatis]MyBatis mapper文件引用变量#{}与${}差异
MyBatis mapper文件引用变量#{}与${}差异 默认,使用#{}语法,MyBatis会产生PreparedStatement中.而且安全的设置PreparedStatement參数,这个过 ...
- intellij idea 插件开发--快速定位到mybatis mapper文件中的sql
intellij idea 提供了openApi,通过openApi我们可以自己开发插件,提高工作效率.这边直接贴个链接,可以搭个入门的demo:http://www.jianshu.com/p/24 ...
- mybatis mapper文件sql语句传入hashmap参数
1.怎样在mybatis mapper文件sql语句传入hashmap参数? 答:直接这样写map就可以 <select id="selectTeacher" paramet ...
- ][mybatis]MyBatis mapper文件中的变量引用方式#{}与${}的差别
转自https://blog.csdn.net/szwangdf/article/details/26714603 MyBatis mapper文件中的变量引用方式#{}与${}的差别 默认情况下,使 ...
- MyBatis mapper文件中使用常量
MyBatis mapper文件中使用常量 Java 开发中会经常写一些静态常量和静态方法,但是我们在写sql语句的时候会经常用到判断是否等于 //静态类 public class CommonCod ...
- Mybatis mapper文件占位符设置默认值
如果要设置占位符默认值的话:需要进行 设置 org.apache.ibatis.parsing.PropertyParser.enable-default-value 属性为true启用占位符默认值处 ...
- 自己挖的坑自己填--Mybatis mapper文件if标签中number类型及String类型的坑
1.现象描述 (1)使用 Mybatis 在进行数据更新时,大部分时候update语句都需要通过动态SQL进行拼接.在其中,if标签中经常会有 xxx !='' 这种判断,若 number 类型的字段 ...
- Mybatis mapper文件中的转义方法
在mybatis中的sql文件中对于大于等于或小于等于是不能直接写?=或者<=的,需要进行转义,目前有两种方式: 1.通过符号转义: 转义字符 < < 小于号 ...
随机推荐
- php基础小知识
1.php中的双引号可以正确的解析变量与转义序列,而单引号只会按照声明原样显示:双里面的字段会经过编译器解释,然后再当作HTML代码输出:单引号里面的不进行解释,直接输出. 2.转义序列是针对源代码的 ...
- 无DLL线程注入
注意要在release方式编译 //线程函数 DWORD WINAPI RemoteThreadProc(LPVOID lpParam) { PDATA pData = (PDATA)lpP ...
- spring的配置
web.xml的配置 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=&q ...
- mvvm结构中数据的关联----wpf
1.在视图中PlotView.xaml <Button Content="<<" Height="23" HorizontalAlignmen ...
- Java从入门到精通——数据库篇Oracle 11g服务详解
装上Oracle之后大家都会感觉到我们的电脑慢了下来,如何提高计算机的速度呢?我们应该打开必要的服务,关闭没有用的服务.下面是Oracle服务的详解: Oracle ORCL VSS Writer S ...
- php配置步奏
web运行大致流程 浏览器输入地址,回车(发送请求) 根据规则找到对应web服务器.规则如下: 首先在本机hosts文件中找对应IP 如果hosts中没有找到,则到互联网上找对应IP 如果还 ...
- 小王子浅读Effective javascript(一)了解javascript版本
哈哈,各位园友新年快乐!愚安好久没在园子里写东西了,这次决定针对javascript做一个系列,叫做<小王子浅读Effective javascript>,主要是按照David Herma ...
- [转载+原创]Emgu CV on C# (四) —— Emgu CV on 全局固定阈值二值化
重点介绍了全局二值化原理及数学实现,并利用emgucv方法编程实现. 一.理论概述(转载,如果懂图像处理,可以略过,仅用作科普,或者写文章凑字数) 1.概述 图像二值化是图像处理中的一项基本技术,也 ...
- NPOI读取Excel数据应用
NPOI 是 POI 项目的 .NET 版本.使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写.NPOI是构建在POI 3.x版本之上的,它 ...
- ffmpeg 音频转码
大多数厂家摄像机输出的音频流格式都是PCM,有一些场合(比如讲音视频流保存成Ts流)需要将PCM格式转成AAC格式.基本的思路是先解码得到音频帧,再将音频帧编码成AAC格式.编码和解码之间需要添加一个 ...