<select id="getByRfidList" parameterClass="java.util.Map"  resultMap="activityFeeResult" >
    select <include refid="allFields"/> from Activity_Fee
    where  RFID in
    <iterate property="rfidList" open="(" close=")" conjunction=",">
        #rfidList[]#
    </iterate>
    and TYPE=#type# and STATUS=0
</select>

支持继承验证,注解到父类上,验证子类是没有问题的。

NotNull 可注解到任意对象,Integer上是可以的,而NotEmpty只能注解到字符串上。

Min可以注解到Integer上,但如果参数为null,则不会处理。

所以要验证Integer,Double,Long型,要加上NotNull和Min两个注解。

为何Min注解不能直接判断是否为Null呢?这使多少开发人员都得掉进坑里。

如果出现javax.validation.UnexpectedTypeException: No validator could be found for type: java.lang.Integer
这类错误,注意看是否将NotEmpty注解到Integer上了。

Spring 2.0以后有了AbstractRoutingDataSource 抽象类

里面有两个核心方法

determineTargetDataSource()
determineCurrentLookupKey()

所有的待切换的数据源都存在map中,所以切哪个目标数据源targetDataSource,要看能够lookup到哪个key。

自定义一个DynamicDataSource AbstractRoutingDataSource  然后实现determineCurrentLookupKey()这个方法,这个方法返回哪个key对应的dataSource,你就访问到了哪个数据源。

 

Spring配置里

先配置好dataSource,dataSourceRead和dataSourceWrite

<bean id="dynamicDataSource" class="com.goglezon.dao.DynamicDataSource">  
   <property name="targetDataSources">     
      <map key-type="java.lang.String">     
         <entry key="read" value-ref="dataSourceRead"/>     
         <entry key="write" value-ref="dataSourceWrite"/>     
      </map>     
   </property>     
   <property name="defaultTargetDataSource" ref="dataSource"/>    
</bean> 

Got it。

 

无法解决,资源文件UTF-8,freemarker 编码UTF-8。

资源文件名: ValidationMessages_zh_CN.properties

内容:

mobile.empty=手机号必填
userId.empty=请输入用户Id
userName.empty=请输入用户名
password.empty=请输入密码

ascii2native后不识别资源内容

加上:

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="useCodeAsDefaultMessage" value="false"/>
<property name="defaultEncoding" value="UTF-8"/>
<property name="fallbackToSystemLocale" value="true"/>
<property name="cacheSeconds" value="60" />
<property name="basenames">
<list>
<value>classpath:ValidationMessages</value>
</list>
</property>
</bean>
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
<property name="validationMessageSource" ref="messageSource"/>
</bean>

依然无效,此问题待解决!

update:

经过几番折腾,发现没有配置下面这行

<mvc:annotation-driven validator="validator"/>

配置后,生效!