一,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>
and delflag = 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)