MyBatis入门程序之mapper映射文件常用配置命令
1、ResultMap高级结果映射
如果查询出的列名和属性名不一致,可以通过ResultMap做映射,放在statement的输出类型中
如下:

2、动态SQL,使用各种动态标签实现动态拼接sql,常用动态SQL标签有if、where、foreach
where 和 if 标签使用如下
<mapper namespace="com.hjp.mapper.UserMapper">
<select id="findUserByName" parameterType="User" resultType="User">
SELECT * FROM USER
<!--where标签会去掉条件中的第一个AND符号,不能自己去掉AND-->
<where>
<if test="userName!=null and userName!=''">
AND username LIKE '%${userName}%'
</if>
</where>
</select>
</mapper>
测试代码如下
@Test
public void func2() throws Exception {
SqlSession session=factory.openSession();
UserMapper userMapper=session.getMapper(UserMapper.class);
User user=new User();
user.setUserName("张");
List<User> users=userMapper.findUserByName(user);
System.out.println(users);
session.close();
}
where和foreach标签使用如下
<select id="findUserByIds" parameterType="List" resultType="User">
SELECT * FROM USER
<where>
<!--如果传入的参数是集合,collection必须为list;如果是对象,collection是对象中为集合的属性-->
<foreach collection="list" item="id" open="and id in(" close=")" separator=",">
#{id}
</foreach>
</where>
</select>
测试代码如下
@Test
public void func3() throws Exception {
SqlSession session=factory.openSession();
UserMapper userMapper=session.getMapper(UserMapper.class);
List<Integer> idList=new ArrayList<Integer>();
idList.add(1);
idList.add(31);
List<User> users=userMapper.findUserByIds(idList);
System.out.println(users);
session.close();
}
3、SQL片段,为了提高SQL的可重用性,可以使用sql标签来定义SQL片段
建议:SQL片段中的内容最后是以表单来定义(也就是依据表单来划分)、如果是查询字段,则不要写上SELECT,如果是条件语句,则不要写上WHERE
使用如下
<sql id="user_columns">
username,sex,birthday
</sql>
<sql id="user_where">
<foreach collection="list" item="id" open="and id in(" close=")" separator=",">
#{id}
</foreach>
</sql>
<select id="findUserByIds" parameterType="List" resultType="User">
SELECT <include refid="user_columns"></include> FROM USER
<where>
<include refid="user_where"></include>
</where>
</select>
MyBatis入门程序之mapper映射文件常用配置命令的更多相关文章
- MyBatis入门程序之Mapper代理方式
Mapper代理的开发方式,程序员只需要编写mapper接口(相当于dao接口)即可,MyBatis会自动为mapper接口生成动态代理实现类. 一.开发规范 1.mapper接口的全限定名要和map ...
- 深入浅出Mybatis系列(七)---mapper映射文件配置之insert、update、delete
上篇文章<深入浅出Mybatis系列(六)---objectFactory.plugins.mappers简介与配置>简单地给mybatis的配置画上了一个句号.那么从本篇文章开始,将会介 ...
- mybatis的mapper映射文件
1概述1.1应用架构 mybatis框架用于支持对关系数据库的操作,该体系的应用架构如下图所示: 在mybatis框架体系中,主要的组件是:SqlSessionFactoryBean和Mapp ...
- 深入浅出Mybatis系列七-mapper映射文件配置之insert、update、delete
注:本文转载自南轲梦 注:博主 Chloneda:个人博客 | 博客园 | Github | Gitee | 知乎 上篇文章<深入浅出Mybatis系列(六)---objectFactory.p ...
- 框架学习系列 mybatis mapper映射文件之输出映射
1: mapper映射文件输出映射(输入类型) 2:resultType的使用 3:resultMap的使用 3:总结&下节预告 本文是<凯哥陪你学系列-框架学习之mybatis框架学习 ...
- 深入浅出Mybatis系列(八)---mapper映射文件配置之select、resultMap
上篇<深入浅出Mybatis系列(七)---mapper映射文件配置之insert.update.delete>介绍了insert.update.delete的用法,本篇将介绍select ...
- 深入浅出Mybatis系列(八)---mapper映射文件配置之select、resultMap good
上篇<深入浅出Mybatis系列(七)---mapper映射文件配置之insert.update.delete>介绍了insert.update.delete的用法,本篇将介绍select ...
- Mybatis学习系列(二)Mapper映射文件
Mapper映射文件,作用是用来配置SQL映射语句,根据不同的SQL语句性质,使用不同的标签,mapper文件中常用的标签有<iselect>.<insert>.<upd ...
- MyBatis 体系结构、根配置文件、Mapper映射文件
一.MyBatis的体系结构 1.SqlSessionFactory对象 SqlSessionFactory对象是MyBatis的管理核心,它是单个数据库映射关系经过编译后的内存镜像,是创建SqlSe ...
随机推荐
- JS BUG 传递数字过大,数据值会变化
如果要在js函数中传递大整型数值,一定要用字符串,否则会出现精度不准确 function testfun('2345234523452141234123412341234523452345123') ...
- Android单行本+多渠道脚本工具
多渠道包的build相信广大android开发者应该很熟悉了,既可以用ant,写一写正则替换然后build出n个apk, 有时后情况会更复杂些,你比如你有一个app,需要build出一些单行本,代码基 ...
- CSS之float vs position:absolute
补充:ul 应该设置下 list-style: none; 题外话:看了张鑫旭的视频,这家伙把简单的css玩出了新花样,绝对大神级的存在.膜拜下先~ float的作用前面一章已经说过了,但没考虑过的是 ...
- MyBatis环境配置及入门
Mybatis 开发环境搭建,选择: MyEclipse8.5 版本,mysql 5.5, jdk 1.8, mybatis3.2.3.jar 包.这些软件工具均可以到各自的官方网站上下载. 整个过程 ...
- 使用mysqldiff生成两个数据库结构不同的脚本
1,全库比较各个表的不同,并输出到文件 mysqldiff --server1=root:root@localhost --server2=root:root@localhost --difftype ...
- 采用MiniProfiler监控EF与.NET MVC项目
今天来说说EF与MVC项目的性能检测和监控 首先,先介绍一下今天我们使用的工具吧. MiniProfiler~ 这个东西的介绍如下: MVC MiniProfiler是Stack Overflow团队 ...
- unity-------------------Unity5.X 新版AssetBundle使用方案及策略
Unity5.X 新版AssetBundle使用方案及策略 1.概览 Unity3D 5.0版本之后的AssetBundle机制和之前的4.x版本已经发生了很大的变化,一些曾经常用的流程已经不再使 ...
- Lemon OA第2篇:功能解析方法
Lemon OA,整个系统功能也算是比较丰富,OA的很多功能都能看见影子,虽然做得不是很强大 接触Lemon OA,起源于Activiti的学习热情,既然这样,研究Lemon OA的目标有3: 1.L ...
- remove docker ce fully on centos7
在centos7上用curl 安装了docker ce版本 删除的方法是 $ sudo yum -y remove docker-ce
- 本地没问题 服务器 提示 Server Error in '/' Application
一. 先用本机的 IIS 测试,不要用 VS 内附的 Web server,並配置 <customErrors mode="Off"/>,以將真實的錯誤原因顯示出來,看 ...