关于sql语句的一些整理(下)

来源:互联网 发布:免费的看书软件 编辑:程序博客网 时间:2024/05/29 09:21

一,Sql修改多个参数,批量修改

普通sql写法:

update  tablename set name="hehe"  where id in('1','2'....);


mybatis中的写法:

update  t_ibss_role

set

delflag = 0

where 1=1

and id in

<foreach item="item" index="index" collection="array" open="(" separator="," close=")">

             #{item}

</foreach>

anddelflag = 1


mybatis的批量更新

<update id="batchUpdate"  parameterType="java.util.List">

     <foreach collection="list" item="item" index="index" open="" close="" separator=";">

        update test 

     <set>

       test=${item.test}+1

    </set>

     where id = ${item.id}

  </foreach>

</update>


二,批量插入,使用mybatis

<insert id="batchSave"  parameterType="java.util.List">

insert into t_crm_zcls(

   id,

   jymoney,

   yhId,

   jyglb,

   jygldh,

   createuser

) values    

<foreach collection="list" item="item" index="index" separator="," >  

        (#{item.id},#{item.jymoney},#{item.yhId},#{item.jyglb},#{item.jygldh},#{item.createuser})  

    </foreach>

</insert>



三,sql语句,两个或者多个表联合起来查询,查询出来的数据接在下面  关键字 union all ,union

SELECT  id  FROM   tablename

UNION ALL

SELECT  id   FROM  tablename

说明:  

Union all  就是把2个具有相同列及数据类型的 结果 放到一起显示,并且不去重。

 union  把数据结构相同的两个表合并成一个表,相同的数据合并成一条。


四,mybatis<![CDATA[<=]]>

一:使用<![CDATA[<=]]>进行大于小于操作

在标记CDATA下,所有的标记、实体引用都被忽略,而被XML处理程序一视同仁地当做字符数据看待,CDATA的形式如下:
<![CDATA[文本内容]]>
CDATA的文本内容中不能出现字符串“]]>”,另外,CDATA不能嵌套。

二:使用特定符号

 

 


五,mysql查询某个字段的数据拼接

SELECT GROUP_CONCAT(qyname)  qyname FROM `t_crm_qy` WHERE id IN ('0000132016112210051952','000013201611221008184b')

查询结果:龙华新区,宝安区


六,批量插入数据库:

 PreparedStatement pstmt = null;
      try {
pstmt=conn.prepareStatement("insert into data_content values(?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
for(DataContent dt:dts){
pstmt.setInt(1, dt.getId());
pstmt.setString(2, dt.getSymbol());
pstmt.setBigDecimal(3, dt.getLastTrade());
pstmt.setBigDecimal(4, dt.getChanges());
pstmt.setString(5, dt.getChg());
pstmt.setBigDecimal(6, dt.getAmplitude());
pstmt.setLong(7, dt.getVolume());
pstmt.setLong(8, dt.getTurnover());
pstmt.setBigDecimal(9, dt.getPrevClose());
pstmt.setBigDecimal(10, dt.getOpenRange());
pstmt.setBigDecimal(11, dt.getMaxRange());
pstmt.setBigDecimal(12, dt.getMinRange());
pstmt.setString(13,dt.getTimeRange());
pstmt.setTimestamp(14, dt.getInsertTime());
pstmt.addBatch();
}
pstmt.executeBatch();
} catch (SQLException e) {
e.printStackTrace();
}finally{
try{
if(pstmt!=null)
pstmt.close();
}catch(Exception e){
e.printStackTrace();
}
}


七,统计数据表中,每个月的总记录数。

SELECT YEAR(createtime) AS YEAR,

MONTH(createtime) AS MONTH,

COUNT(createtime) AS sun_total

FROM t_crm_yh

GROUP BY YEAR(createtime),

MONTH(createtime)


八,Mysql字符串的截取,关键字  locate ,leef

SELECT  tcname FROM `t_crm_tc` WHERE (LEFT(tcname,LOCATE('m',tcname)-1)>2)







原创粉丝点击