开发问题杂记

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

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页