mybatis框架的xml映射文件常用查询指南

使用mybatis框架时,那必然会有对数据库的查询语句的编写,所以这篇文章希望可以帮助到你。

什么是Mybatis框架?

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。

如何使用?

pom文件依赖

<dependency>
 <groupId>org.mybatis.spring.boot</groupId>
 <artifactId>mybatis-spring-boot-starter</artifactId>
 <version>2.1.3</version>
</dependency>

yml文件配置,这里匹配 resource/mapper/ 路径下的映射文件。

mybatis:
  mapper-locations: classpath:mapper/*.xml

在xml文件中绑定持久层接口和实体对象

<?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.flamelephant.fabricmgt.dao.HostMapper">
 <resultMap type="com.flamelephant.fabricmgt.entity.po.Host" id="HostMap">
 <result property="id" column="id" jdbcType="INTEGER"/>
 <result property="hostName" column="host_name" jdbcType="VARCHAR"/>
 <result property="ip" column="ip" jdbcType="VARCHAR"/>
 <result property="userName" column="user_name" jdbcType="VARCHAR"/>
 <result property="passWord" column="pass_word" jdbcType="VARCHAR"/>
 <result property="state" column="state" jdbcType="OTHER"/>
 <result property="tag" column="tag" jdbcType="VARCHAR"/>
 <result property="gmtCreated" column="gmt_created" jdbcType="TIMESTAMP"/>
 <result property="gmtModified" column="gmt_modified" jdbcType="TIMESTAMP"/>
 </resultMap>
</mapper>
  • mapper标签中的namespace属性指定的是我们持久层接口的项目路径
  • resultMap是Mybatis最强大的元素,它可以将查询到的复杂数据(比如查询到几个表中数据)映射到一个结果集当中
  • resultMap标签的type属性是我们要映射的实体对象的项目路径,id为resultMap的唯一标识。
  • resultMap中的result标签是实体和数据库表字段的绑定,其中property属性为实体对象的属性名,column为数据库的字段名,jdbcType是字段的类型。

xml映射文件的sql编写

通过实体作为筛选条件查询

<select id="queryAll" resultMap="HostMap">
    select id,
           host_name,
           ip,
           user_name,
           pass_word,
           state,
           tag,
           gmt_created,
           gmt_modified
    from host
 <where>
    <if test="id != null and id != ''">
        and id = #{id}
    </if>
    <if test="hostName != null and hostName != ''">
        and host_name like CONCAT('%', #{hostName}, '%')
    </if>
    <if test="ip != null and ip != ''">
        and ip like CONCAT('%', #{ip}, '%')
    </if>
    <if test="userName != null and userName != ''">
        and user_name = #{userName}
    </if>
    <if test="passWord != null and passWord != ''">
        and pass_word = #{passWord}
    </if>
    <if test="state != null and state != ''">
        and state = #{state}
    </if>
    <if test="tag != null and tag != ''">
        and tag = #{tag}
    </if>
    <if test="gmtCreated != null">
        and gmt_created = #{gmtCreated}
    </if>
    <if test="gmtModified != null">
        and gmt_modified = #{gmtModified}
    /if>
 </where>
</select>
  • id="queryAll"为持久层接口的抽象方法名
  • resultMap="HostMap" 指定查询结果接收的resultMap的结果集。

持久层接口绑定

/**
 * 条件查询
 *
 * @param host 条件查询
 * @return 对象列表
 */
List<Host> queryAll(Host host);

通过主键批量删除

<!--通过主键批量删除-->
<delete id="deleteHostByIds" parameterType="java.lang.Integer">
 delete
    from host
            where id in
    <if test="hostIds != null and hostIds.length > 0">
        <foreach item="id" collection="hostIds" index="index" open="(" separator="," close=")">
            #{id}
        </foreach>
    </if>
 </delete>

以上sql语句的原型为

delete from host where id in(1,2,3)

foreach标签中的属性理解

  • collection属性为接收的数据源
  • item为集合中的每一个元素
  • index :用于表示在迭代过程中,每次迭代到的位置
  • open :表示该语句以什么开始
  • separator :表示在迭代时数据以什么符号作为分隔符
  • close :表示以什么结束

持久层接口抽象方法

/**
 * 批量删除主机
 *
 * @param hostIds 主机id数组
 * @return Integer
 */Integer deleteHostByIds(@Param("hostIds") Long[] hostIds);

批量新增

<!--批量增加-->
<insert id="addHostList">
 insert into host_and_group(host_group_id, host_id)
       values
    <foreach collection="hostGroupIdList" item="hostGroupId" index="index" separator=",">
            (#{hostGroupId}, #{hostId})
    </foreach>
</insert>

持久层接口方法

/**
 * 将多个主机添加至一个主机组
 *
 * @param request
 * @return Integer
 */Integer addHostList(HostAndGroupRequest request);

我是元素封装在一个对象中,所以这个对象里有批量增加的元素,则直接可以传一个对象。

总结

到此这篇关于mybatis框架的xml映射文件常用查询指南的文章就介绍到这了,更多相关mybatis xml映射文件查询内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java的MyBatis框架中XML映射缓存的使用教程

    MyBatis包含一个非常强大的查询缓存特性,它可以非常方便地配置和定制.默认情况下是没有开启缓存的,要开启二级缓存,你需要在你的SQL映射文件中添加一行: <cache/> 字面上看就是这样.这个简单语句的效果如下: 1.映射语句文件中的所有select语句将会被缓存. 2.映射语句文件中的所有insert,update和delete语句会刷新缓存. 3.缓存会使用Least Recently Used(LRU,最近最少使用的)算法来收回. 4.根据时间表(比如 no Flush Inter

  • mybatis映射XML文件详解及实例

    mybatis映射XML文件 一个简单的映射文件: <?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="c

  • Java的MyBatis框架中关键的XML字段映射的配置参数详解

    properties 这些是外部化的,可替代的属性,这些属性也可以配置在典型的Java属性配置文件中,或者通过properties元素的子元素来传递.例如: <properties resource="org/mybatis/example/config.properties"> <property name="username" value="dev_user"/> <property name="pas

  • mybatis框架的xml映射文件常用查询指南

    使用mybatis框架时,那必然会有对数据库的查询语句的编写,所以这篇文章希望可以帮助到你. 什么是Mybatis框架? MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录. 如何使用?

  • MyBatis中XML 映射文件中常见的标签说明

    SQL 映射文件只有很少的几个顶级元素(按照应被定义的顺序列出): cache – 对给定命名空间的缓存配置. cache-ref – 对其他命名空间缓存配置的引用. resultMap – 是最复杂也是最强大的元素,用来描述如何从数据库结果集中来加载对象. parameterMap – 已被废弃!老式风格的参数映射.更好的办法是使用内联参数,此元素可能在将来被移除. sql – 可被其他语句引用的可重用语句块. insert – 映射插入语句 update – 映射更新语句 delete –

  • mybatis整合spring实现开启mapper.xml映射文件扫描

    目录 mybatis整合spring开启mapper.xml映射文件扫描 spring配置扫描mybatis的mapper文件注意 mybatis整合spring开启mapper.xml映射文件扫描 一般情况下,我们知道在使用mybatis的时候,必须在mybatis全局配置文件里配置映射文件. 代码如下: <mappers> <mapper resource="/resources/mybatis/sys/ParamMapper.xml"/> <mapp

  • MyBatis Xml映射文件之字符串替换方式

    目录 MyBatis Xml映射文件字符串替换 字符串替换 举个例子 Mybatis中字符串替换问题 MyBatis Xml映射文件字符串替换 字符串替换 默认情况下,使用 #{} 格式的语法会导致 MyBatis 创建 PreparedStatement 参数占位符并安全地设置参数(就像使用 ? 一样). 这样做更安全,更迅速,通常也是首选做法,不过有时你就是想直接在 SQL 语句中插入一个不转义的字符串. 比如,像 ORDER BY,你可以这样来使用: ORDER BY ${columnNa

  • Java Mybatis的初始化之Mapper.xml映射文件的详解

    目录 解析Mapper文件入口 解析Mapper文件 总结 前言: 解析完全局配置文件后接下来就是解析Mapper文件了,它是通过XMLMapperBuilder来进行解析的 解析Mapper文件入口 XMLMapperBuilder的parse()方法: public void parse() { if (!configuration.isResourceLoaded(resource)) { configurationElement(parser.evalNode("/mapper"

  • Java的MyBatis框架中实现多表连接查询和查询结果分页

    实现多表联合查询 还是在david.mybatis.model包下面新建一个Website类,用来持久化数据之用,重写下相应toString()方法,方便测试程序之用. package david.mybatis.model; import java.text.SimpleDateFormat; import java.util.Date; public class Website { private int id; private String name; private int visito

  • Mybatis通过数据库表自动生成实体类和xml映射文件

    环境:maven+idea. 1. 需要的jar包 基本的spring和mybatis依赖包就不说了,在pom文件的build->plugins节点下需要添加(两个依赖包也可以直接添加到pom的依赖里面去,这里是为了直接通过maven的插件来生成.如果不是使用maven,自行百度下): <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-mave

  • Java的MyBatis框架中Mapper映射配置的使用及原理解析

    Mapper的内置方法 model层就是实体类,对应数据库的表.controller层是Servlet,主要是负责业务模块流程的控制,调用service接口的方法,在struts2就是Action.Service层主要做逻辑判断,Dao层是数据访问层,与数据库进行对接.至于Mapper是mybtis框架的映射用到,mapper映射文件在dao层用. 下面是介绍一下Mapper的内置方法: 1.countByExample ===>根据条件查询数量 int countByExample(UserE

  • Spring框架读取property属性文件常用5种方法

    1.方式一:通过spring框架 PropertyPlaceholderConfigurer 工具实现 <bean id="propertyConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="ignoreUnresolvablePlaceholders" value=&quo

随机推荐