Xml中遍历List
<if test="list != null and list.size() > 0">
and status in
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item,jdbcType=VARCHAR}
</foreach>
</if>
resultType和resultMap的区别
相同:
MyBatis中在查询进行select映射的时候,返回类型为resultType、resultMap
不同:
- resultType是直接表示返回类型的(对应着我们的model对象中的实体)
- resultMap则是对外部ResultMap的引用(提前定义了db和model之间的隐射key–>value关系),但是resultType跟resultMap不能同时存在。
当我们在项目中添加了mapper.xml文件,就需要把这些mapper扫描进去
在创建SqlSessionFactory的时候,加了以下配置:
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
bean.setMapperLocations(resolver.getResources("classpath*:mapper/*Mapper.xml"));
bean.setTypeAliasesPackage("com.test.maper");
而且注意setTypeAliasesPackage参数不支持通配符*,如果有多个包可以通过","等分割
在实际项目中使用:
@Autowired
private DataSource dataSource;
@Bean("sqlSessionFactory")
public SqlSessionFactory buildSqlSessionFactory() throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
bean.setMapperLocations(resolver.getResources("classpath*:mapper/*Mapper.xml"));
bean.setPlugins(parameterHandlerInterceptor());
return bean.getObject();
}
如果需要加载依赖传递过来的jar包中的mapper目录下的xml,classpath:mapper/.xml 修改为classpath:mapper/*.xml