MySQL中的类型是datetime, POJO中一个属性是int 类型的year。
我有一个SQL语句像这样select * from xxx where posttime=#{year}
请问怎么映射,SQL语句要怎么改改。
更新:
我谷歌了一下,然后现在这样写的SQL,问题可以解决。但一个SQL语句里用2个YEAR函数,感觉还是怪怪的,也不知道会不会影响效率。请问有更好的办法吗?
<select id="getByYear" resultMap="classmap2">
SELECT
cid,
tid,
name,
YEAR(year) as year
FROM class
WHERE YEAR(year) = #{year}
</select>
where中尽量不要去对列进行转换,这样会用不到该列的索引,正常的做法是在比较符的右边处理,比如下面这句↓
select * from tb where val/100>1
对应的改法是↓
select * from tb where val>100
说这么多,不知道你是否知道你那个怎么改了没。
`select cid,tid,name,YEAR(year) as year
FROM class
WHERE year >= concat(#{year},'-01-01') and year <= concat(#{year},'-12-31')
`
这样也可以取到#{year}这年的所有数据,又可以用到year列的索引