<?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>
对mybastis 的理解1
时间: 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内部表示