对mybastis 的理解1

<?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="org.xnat.BaseDao">
    <!-- 新增v1-->
    <insert id="insert">
        insert into ${tableName}
        <foreach item="item" index="index" collection="list" open="(" separator="," close=")">
            ${item.key}
        </foreach>
        values
        <foreach item="item" index="index" collection="list" open="(" separator="," close=")">
            #{item.value}
        </foreach>
    </insert>
    <!-- 新增v1_2
         useGeneratedKeys="true" keyProperty="id"
    -->
    <insert id="insert_v1_2" parameterType="map">
        insert into ${tableName}
        <foreach item="item" index="index" collection="autoMaps" open="(" separator="," close=")">
            ${item.key}
        </foreach>
        values
        <foreach item="item" index="index" collection="autoMaps" open="(" separator="," close=")">
            #{item.value}
        </foreach>
        <selectKey resultType="int" keyProperty="autoKey" order="AFTER">
            select LAST_INSERT_ID() as autoKey
        </selectKey>
        <!--
         -->
    </insert>
    
    
    <!-- 查询select_v4-->
    <select id="select_v4" resultType="hashmap">
        select
        <!-- 选择的字段 -->
        <foreach collection="selectFields" item="item" separator=",">`${item}`</foreach>
        from ${tableName}
        <!-- 条件 -->
        <where>
            <if test="conditions != null">
                <foreach collection="conditions" item="condition" separator=" and ">
                <!--
                ${condition.key} ${condition.denotation} #{condition.value}
                这种不能适应 denotation 为 "in" value 为 "(v1, v2)"
                ${condition.key} ${condition.denotation} ${condition.value}
                这种不能适应  ${condition.value} 为字符串
                -->
                    `${condition.key}` ${condition.denotation} #{condition.value}
                </foreach>
            </if>
        </where>
        <!-- 分组 list<String>-->
        <if test="group != null">
            group by
            <foreach collection="group" item="item" separator=", ">
                ${item}
            </foreach>
        </if>
        <!-- group 后的having 条件 -->
        <if test="havingSql != null and group != null">
            ${havingSql}
        </if>
        <!-- 排序 -->
        <if test="sort != null">
            order by
            <foreach collection="sort" item="item" separator=", ">
                ${item.key} ${item.value}
            </foreach>
        </if>
        <!-- 分页 -->
        <if test="page != null">
            LIMIT #{page.start}, #{page.limit}
        </if>
    </select>
    <!-- 查询select_v4_2-->
    <select id="select_v4_2" resultType="hashmap">
        select
        <!-- 选择的字段 -->
        <foreach collection="selectFields" item="item" separator=",">`${item}`</foreach>
        from ${tableName}
        <!-- 条件 -->
        <if test="conditionSql != null">
        ${conditionSql}
        </if>
        <!-- 分组 list<String>-->
        <if test="group != null">
            group by
            <foreach collection="group" item="item" separator=", ">
                ${item}
            </foreach>
        </if>
        <!-- group 后的having 条件 -->
        <if test="havingSql != null and group != null">
            ${havingSql}
        </if>
        <!-- 排序 -->
        <if test="sort != null">
            order by
            <foreach collection="sort" item="item" separator=", ">
                ${item.key} ${item.value}
            </foreach>
        </if>
        <!-- 分页 -->
        <if test="page != null">
            LIMIT #{page.start}, #{page.limit}
        </if>
    </select>
    <!-- 删除_v3-->
    <delete id="delete_v3">
        delete from ${tableName}
        <where>
            <if test="conditions != null">
                <foreach item="item" index="index" collection="conditions" separator=" and ">
                    ${item.key}${item.denotation}#{item.value}
                </foreach>
            </if>
        </where>
    </delete>
    <!-- 删除_v3-->
    <delete id="delete_v3_2">
        delete from ${tableName}
        <if test="conditionSql != null">${conditionSql}</if>
    </delete>
    
    
    <!-- 更新_v2-->
    <update id="update_v2">
        update ${tableName}
        <set>
        <foreach item="item" index="index" collection="list" separator=",">
            ${item.key}=#{item.value}
        </foreach>
        </set>
        <where>
            <if test="conditions != null">
                <foreach item="item" index="index" collection="conditions" separator=" and ">
                    ${item.key} ${item.denotation} #{item.value}
                </foreach>
            </if>
        </where>
    </update>
    <!-- 更新_v2-->
    <update id="update_v2_2">
        update ${tableName}
        <set>
        <foreach item="item" index="index" collection="list" separator=",">
            ${item.key}=#{item.value}
        </foreach>
        </set>
        <if test="conditionSql != null">${conditionSql}</if>
    </update>
    
    <!-- 查询实体存在的数量-->
    <select id="getTotal" resultType="int">
        select count(*) from ${tableName}
        <where>
            <if test="conditions != null">
                <foreach item="item" index="index" collection="conditions" separator=" and ">
                    <!--
                    ${item.key} ${item.denotation} #{item.value}
                    不能用于 key != ‘‘
                     -->
                    `${item.key}` ${item.denotation} #{item.value}
                </foreach>
            </if>
        </where>
    </select>
    <!-- 查询实体存在的数量-->
    <select id="getTotal_v1_2" resultType="int">
        select count(*) from ${tableName}
        <if test="conditionSql != null">${conditionSql}</if>
    </select>
    
    <!-- 统计一个字段所有值的和-->
    <select id="countField" resultType="long">
        select sum(${fieldName}) from ${tableName}
        <where>
            <if test="conditions != null">
                <foreach item="item" index="index" collection="conditions" separator=" and ">
                    `${item.key}` ${item.denotation} #{item.value}
                </foreach>
            </if>
        </where>
    </select>
    
    <!-- 自定义sql查询-->
    <select id="selectSql" resultType="hashmap">
        ${sql}
    </select>
    
    
</mapper>

时间: 2024-10-16 15:30:30

对mybastis 的理解1的相关文章

对mybastis 的理解2--BaseDao接口方法声明

package org.xnat.dao;  import java.util.List; import java.util.Map;  import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Component; import org.xnat.dao.util.AutoMap; import org.xnat.dao.util.Page;   /**  * 不直接用此baseDao 外

对mybastis 的理解3--dao层数据库主通道工具类

package org.xnat.dao.util; import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.util.ArrayList;import java.util.List;import java.util.Map; import org.apache.commons.beanutils.BeanUtils;import org.springframewo

对mybastis 的理解4--dao层辅助类AutoMap

package org.xnat.dao.util;  import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List;  import javax.persistence.Column;  /**  *   * @author xnat  *  */ public class AutoMap {     //键     private String key;     //符号     priva

Python——深入理解urllib、urllib2及requests(requests不建议使用?)

深入理解urllib.urllib2及requests            python Python 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年,Python 源代码同样遵循 GPL(GNU General Public License)协议[1] .Python语法简洁而清晰,具有丰富和强大的类库. urllib and urllib2 区别 urllib和urllib2模块都做与请求URL相关的操作,但

关于SVM数学细节逻辑的个人理解(三) :SMO算法理解

第三部分:SMO算法的个人理解 接下来的这部分我觉得是最难理解的?而且计算也是最难得,就是SMO算法. SMO算法就是帮助我们求解: s.t.   这个优化问题的. 虽然这个优化问题只剩下了α这一个变量,但是别忘了α是一个向量,有m个αi等着我们去优化,所以还是很麻烦,所以大神提出了SMO算法来解决这个优化问题. 关于SMO最好的资料还是论文<Sequential Minimal Optimization A Fast Algorithm for Training Support Vector

2.2 logistic回归损失函数(非常重要,深入理解)

上一节当中,为了能够训练logistic回归模型的参数w和b,需要定义一个成本函数 使用logistic回归训练的成本函数 为了让模型通过学习来调整参数,要给出一个含有m和训练样本的训练集 很自然的,希望通过训练集找到参数w和b,来得到自己得输出 对训练集当中的值进行预测,将他写成y^(I)我们希望他会接近于训练集当中的y^(i)的数值 现在来看一下损失函数或者叫做误差函数 他们可以用来衡量算法的运行情况 可以定义损失函数为y^和y的差,或者他们差的平方的一半,结果表明你可能这样做,但是实际当中

理解信息管理系统

1.信息与数据的区别是什么? 数据是记录客观事物,可鉴别的符号,而信息是具有关联性和目的性的结构化,组织化的数据.数据经过处理仍是数据,而信息经过加工可以形成知识.处理数据是为了便于更好的解释,只有经过解释,数据才有意义,才可以成为信息.可以说信息是经过加工以后,对客观世界产生影响的数据. 2.信息与知识的区别是什么? 信息是具有关联性和目的性的结构化,组织化的数据,知识是对信息的进一步加工和应用,是对事物内在规律和原理的认识.信息经过加工可以形成知识. 3.举一个同一主题不同级别的数据.信息.

深度理解div+css布局嵌套盒子

1. 网页布局概述 网页布局的概念是把即将出现在网页中的所有元素进行定位,而CSS网页排版技术有别于传统的网页排版方法,它将页面首先在整体上使用<div>标记进行分块,然后对每个快进行CSS定位以及设置显示效果,最后在每个块中添加相应的内容.利用CSS排版方法更容易地控制页面每个元素的效果,更新也更容易,甚至页面的拓扑结构也可以通过修改相应的CSS属性来重新定位.  2. 盒子模型 盒子模型是CSS控制页面元素的一个重要概念,只有掌握了盒子模型,才能让CSS很好地控制页面上每一个元素,达到我们

深入理解Java:类加载机制及反射

一.Java类加载机制 1.概述 Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数,属性和方法等,Java允许用户借由这个Class相关的元信息对象间接调用Class对象的功能. 虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制. 2.工作机制 类装载器就是寻找类的字节码文件,并构造出类在JVM内部表示