1、Date类型转json格式问题
今天使用mybatis查询时间字段发现了一个问题,返回前端数据时,发现Date类型的数据变成了时间戳,原本以为是mybatis查询时,resultType是map,没有显示指定转换类型的原因,后面通过断点查询时,发现是Date类型转换json格式时,被转成时间戳,必须先将Date转成String才能正常转换成json格式
2、quartz框架job类属性问题
在使用quartz框架编写定时器中,任务类添加了一个属性对象,用SpringBean.getBean获取实例,结果发现报错,查询资料后发现,quartz在实际执行job时,会重新生成一个代理类去执行,并不是原先的job类,因此原先的属性会生效,不能直接在job类定义属性。若使用属性自动注入的话,需要使用AdaptableJobFactory,具体解决方法如下:
public class JobFactory extends AdaptableJobFactory {
@Autowired
private AutowireCapableBeanFactory capableBeanFactory;
@Override
protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {
//调用父类的方法
Object jobInstance = super.createJobInstance(bundle);
//进行注入
capableBeanFactory.autowireBean(jobInstance);
return jobInstance;
}
}
<!-配置定时器时,在SchedulerFactoryBean中配置jobFactory属性,这样job类就可以使用自动注入->
<bean id="jobFactory" class=""></bean>
<bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="jobFactory" ref="jobFactory"></property>
</bean>
public class quartzJob implements Job {
private static final Logger logger = LoggerFactory.getLogger(quartzJob.class);
@Autowired
private jobService jobService;
3、mybatis 里test问题
<when test='freq=="0"'>
and 1=1
</when>
<when test="freq=='0'">
and 1=1
</when>
mybatis中,‘0’会被解析成字符,即java中的char,“0”会被解析成字符串,即java 中的String
4、SpringMVC 返回JSON格式字符串问题
今天写HTTP请求接口,想要返回json格式字符串时,发现返回的字符串多了{\"\"}转义符,初始代码是这样
@RequestMapping(value = "/login.do")
@ResponseBody
public String login(HttpServletRequest request, HttpServletResponse response){
...业务代码
return JSONObject.fromObject(result).toString();
}
这种写法,虽然返回的是{xx:xx}的字符串,但是获取时,会被添加转义符\。想要拿到不带转义符,要这样写
@RequestMapping(value = "/login.do")
@ResponseBody
public JSONObject login(HttpServletRequest request, HttpServletResponse response){
...业务代码
return JSONObject.fromObject(result);
}
这样SpringMVC会自动把返回值处理成JSON格式
5、mybatis 一对多查询 resultMap 写法
<resultMap id="AreaMap" type="map">
<id column="AREAID" property="areaId" javaType="String" jdbcType="VARCHAR"/>
<result column="AREATYPE" property="areaType" javaType="String" jdbcType="VARCHAR"/>
<collection property="pointList" ofType="map" javaType="list">
<result column="POINTID" property="pointId" javaType="String" jdbcType="VARCHAR"/>
<result column="LNG" property="lng" javaType="String" jdbcType="VARCHAR"/>
<result column="LAT" property="lat" javaType="String" jdbcType="VARCHAR"/>
<result column="GPSLNG" property="gpsLng" javaType="String" jdbcType="VARCHAR"/>
<result column="GPSLAT" property="gpsLat" javaType="String" jdbcType="VARCHAR"/>
<result column="RADIUS" property="radius" javaType="String" jdbcType="VARCHAR"/>
</collection>
</resultMap>
注意:
1)必须指定id,即必须有id标签
2)collection标签必须指明ofType和JavaType