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映射文件常用配置命令的更多相关文章

  1. MyBatis入门程序之Mapper代理方式

    Mapper代理的开发方式,程序员只需要编写mapper接口(相当于dao接口)即可,MyBatis会自动为mapper接口生成动态代理实现类. 一.开发规范 1.mapper接口的全限定名要和map ...

  2. 深入浅出Mybatis系列(七)---mapper映射文件配置之insert、update、delete

    上篇文章<深入浅出Mybatis系列(六)---objectFactory.plugins.mappers简介与配置>简单地给mybatis的配置画上了一个句号.那么从本篇文章开始,将会介 ...

  3. mybatis的mapper映射文件

    1概述1.1应用架构     mybatis框架用于支持对关系数据库的操作,该体系的应用架构如下图所示: 在mybatis框架体系中,主要的组件是:SqlSessionFactoryBean和Mapp ...

  4. 深入浅出Mybatis系列七-mapper映射文件配置之insert、update、delete

    注:本文转载自南轲梦 注:博主 Chloneda:个人博客 | 博客园 | Github | Gitee | 知乎 上篇文章<深入浅出Mybatis系列(六)---objectFactory.p ...

  5. 框架学习系列 mybatis mapper映射文件之输出映射

    1: mapper映射文件输出映射(输入类型) 2:resultType的使用 3:resultMap的使用 3:总结&下节预告 本文是<凯哥陪你学系列-框架学习之mybatis框架学习 ...

  6. 深入浅出Mybatis系列(八)---mapper映射文件配置之select、resultMap

    上篇<深入浅出Mybatis系列(七)---mapper映射文件配置之insert.update.delete>介绍了insert.update.delete的用法,本篇将介绍select ...

  7. 深入浅出Mybatis系列(八)---mapper映射文件配置之select、resultMap good

    上篇<深入浅出Mybatis系列(七)---mapper映射文件配置之insert.update.delete>介绍了insert.update.delete的用法,本篇将介绍select ...

  8. Mybatis学习系列(二)Mapper映射文件

    Mapper映射文件,作用是用来配置SQL映射语句,根据不同的SQL语句性质,使用不同的标签,mapper文件中常用的标签有<iselect>.<insert>.<upd ...

  9. MyBatis 体系结构、根配置文件、Mapper映射文件

    一.MyBatis的体系结构 1.SqlSessionFactory对象 SqlSessionFactory对象是MyBatis的管理核心,它是单个数据库映射关系经过编译后的内存镜像,是创建SqlSe ...

随机推荐

  1. SpringBoot2 启动报错 Failed to auto-configure a DataSource

    今天Spring Boot 2.0正式版发布,寻思着搭个小demo尝试一下Spring Boot的新特性,使用idea创建项目.在选择组件时添加了mysql.mybatis 然后在第一次启动的时候启动 ...

  2. CSS Notes

    Margin vs. PaddingMargin is on the outside of block elements while padding is on the inside. Use mar ...

  3. linux守护进程编写实践

    主要参考:http://colding.bokee.com/5277082.html (实例程序是参考这的) http://wbwk2005.blog.51cto.com/2215231/400260 ...

  4. Java设计模式(20)观察者模式(Observer模式)

    Java深入到一定程度,就不可避免的碰到设计模式(design pattern)这一概念,了解设计模式,将使自己对java中的接口或抽象类应用有更深的理解.设计模式在java的中型系统中应用广泛,遵循 ...

  5. mysql深坑之--group_concat有长度限制!!!!默认1024

    在mysql中,有个函数叫“group_concat”,平常使用可能发现不了问题,在处理大数据的时候,会发现内容被截取了,其实MYSQL内部对这个是有设置的,默认不设置的长度是1024,如果我们需要更 ...

  6. 简单MVVM教程

    WPF+MVVM的本地桌面程序为背景,这样一来我们可以不去操心服务器那部分的事情,更加专注我们的MVVM.我打算把最重要的部分放到开头来讲,而接下来这最重要的部分却是全篇教程唯一没有代码的部分.好,下 ...

  7. Mac下Pycharm导入Python包

    1.png   2.png   3.png

  8. Kali配置网卡静态信息

    临时配置ip ifconfig eth0 up //端口启用 ifconfig eth0 down //端口关闭 ifconfig eth0 192.168.1.10 //只修改ip地址 ifconf ...

  9. numpy的排序

  10. Ajax+Jsp+servlet+json技术的使用

    Ajax+Jsp+servlet+json技术的使用 在使用json的时候,记得必须导入如下几个.jar包,最好是手动复制.jar包只lib路径下,否则可能出现异常. commons-beanutil ...