mysql xml语法总结和使用总结

mysql函数篇

1.sum(字段名)
对该字段求和

2.ifnull(表达式,0)
如果表达式为null,给默认值0

3.CONCAT(s1,s2…,sn)将s1,s2…,sn连接成字符串
4.CONCAT_WS(sep,s1,s2…,sn)将s1,s2…,sn连接成字符串,并用sep字符间隔
5.TRIM(str)去除字符串首部和尾部的所有空格
6.DATE_FORMAT(#{date},’%Y-%m-%d 00:00:00’)格式化日期为字符串

7.IF(test,t,f) 如果test是真,返回t;否则返回f
8.IFNULL(arg1,arg2) 如果arg1不是空,返回arg1,否则返回arg2
9.NULLIF(arg1,arg2) 如果arg1=arg2返回NULL;否则返回arg1

xml篇

1.resultMap
作用:可以映射数据库字段和pojo的对应关系;
事例:

<resultMap id="BaseResultMap" type="com.xxx.dao.entity.THistoryPValue">
    <!--
      WARNING - @mbg.generated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Mon Jul 29 11:53:44 CST 2019.
    -->
    <id column="id" jdbcType="INTEGER" property="id" />
    <result column="history_p_value" jdbcType="VARCHAR" property="historyPValue" />
    <result column="id_s" jdbcType="INTEGER" property="idS" />
    <result column="history_p_value_s" jdbcType="VARCHAR" property="historyPValueS" />
  </resultMap>

Q:在自定义的resultMap中第一列通常是主键id,那么id 和result有什么区别呢?
A:id和result都是映射单列值到一个属性或字段的简单数据类型。
唯一不同的是,id是作为唯一标识的,当和其他对象实例对比的时候,这个id很有用,尤其是应用到缓存和内嵌的结果映射。

2.include
作用:包含某些固定字段
事例:

//定义基础属性查询
<sql id="Base_Column_List">
    <!--
      WARNING - @mbg.generated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Mon Jul 29 11:53:44 CST 2019.
    -->
    id, history_p_value, id_s, history_p_value_s
  </sql>

//使用include的refid包含指定字段
 <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
    <!--
      WARNING - @mbg.generated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Mon Jul 29 11:53:44 CST 2019.
    -->
    select 
    <include refid="Base_Column_List" />
    from t_history_p_value
    where id = #{id,jdbcType=INTEGER}
  </select>

3.#{}PK${}
#{}防sql注入,预编译为?
${}编译时会传入具体值
综指:尽可能使用#{}.
事例:

//预编译后,会动态解析成一个参数标记符?:
//select * from student where student_name = ?
select * from student where student_name = #{name} 


//使用${}在动态解析时候,会传入参数字符串
//select * from student where student_name = 'name的实际值'
select * from student where student_name = ${name} 

//#{} 这种取值是编译好SQL语句再取值
//${} 这种是取值以后再去编译SQL语句
//#{}方式能够很大程度防止sql注入。
//${}方式无法防止Sql注入。
//一般能用#的就别用$.
//$方式一般用于传入数据库对象,例如传入表名.例子:
//select * from ${prefix} where id = #{id}

4.choose && when && otherwise
事例:
在这里插入图片描述
when元素表示当 when 中的条件满足的时候就输出其中的内容,跟 JAVA 中的 switch 效果差不多的是按照条件的顺序,当 when 中有条件满足的时候,就会跳出 choose,即所有的 when 和 otherwise 条件中,只有一个会输出,当所有的我很条件都不满足的时候就输出 otherwise 中的内容。
可用在select和where语句后面

5.distinct(去重)
举例子:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
6.resultType:
1、基本类型 :resultType=基本类型
2、List类型: resultType=List中元素的类型
3、Map类型:单条记录:resultType =map
多条记录:resultType =Map中value的类型
事例:

7.trim标签

trim属性主要有以下四个
prefix:前缀覆盖并增加其内容
suffix:后缀覆盖并增加其内容
prefixOverrides:前缀判断的条件
suffixOverrides:后缀判断的条件

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值