本文共 2572 字,大约阅读时间需要 8 分钟。
#{}:其作用相当于占位符,MyBatis会将里面的参数解析成一个字符串,比如,select * from table where name = #{name},当传入的name为小李,则执行的SQL为select * from table where name = '小李'。预编译,和JDBC的prepareStatement一样,无法进行SQL注入。
${}:其作用是直接拼接参数的值到SQL语句中,而不对其加上单引号,比如,order by ${argu},当传入的argu为age时,执行的SQL为order by age。
${}、#{}的使用举例:
示例一:获取用户在一段时间内某种设备的登录时间
后端Controller
@RequestMapping(value = "/getStatisticsData", method = RequestMethod.GET, produces = "application/json;charset=utf8")public ListgetStatisticsData(Long startTime, Long endTime, String argu) { List result = mapper.getSum(getTableName(), startTime, endTime, argu); return result;}
Mapper接口:
ListgetSum(@Param("table") String table, @Param("start") String startTime, @Param("end") String endTime, @Param("tpType") String argu);
Mapper.xml:
tpType可以是使用移动设备(平板/手机)登录的时间,也可以是使用电脑登录的时间
示例二:获取用户一段时间内每天(可能有几条数据)使用某种设备的登录时间
注意:如果某个分组不只一条数据,即时不使用avg等函数,得到的各个分组中依然只有一条数据,并且其字段是该分组所有数据中的一条的值。
示例三:带有过滤条件的查询
= #{start} ]]> order by `time` asc limit #{start}, #{count}
示例四:单条插入&批量插入
单条插入
insert into ${table}( username, `time`, line90, line95, line99 ) values( #{data.username}, #{data.time}, #{data.line90}, #{data.line95}, #{data.line99} )
批量插入
insert into ${table}( username, `time`, line90, line95, line99 ) values ( #{data.username}, #{data.time}, #{data.line90}, #{data.line95}, #{data.line99} )
示例五:单条删除&批量删除
单条删除
delete from ${table} where id=#{id}
批量删除
delete from ${table} where id in #{id}
转载地址:http://zfnii.baihongyu.com/