一、需求的产生
因为数据库中表字段的类型比较少,所以,一般情况下,往数据库中的表插入数据时,对应的实体类中各属性的类型基本都是字符串(String)、数字(int)或日期(Date)的。
如果有其它复杂类型(如List)的,可以在Java层做相应处理转化为字符串类型,再放到字段对应的属性值上。但是这样的话,同一个字段可能需要对应实体类中的两个属性,一个属性是复杂类型,一个属性是基本类型。
如果实体类中只想要保留复杂类型(List)的属性,那就需要在SQL语句上进行转化的操作,将复杂类型转换为基本类型。
二、可行方法
通过查找资料,发现MyBaits的动态SQL支持<foreach>,可以进行SQL语句的循环拼接。简单的使用方法如下:
public interface SysUserMapper extends BaseMapper<SysUser> {@Insert("<script>INSERT INTO your_table (role_ids) VALUES <foreach collection='roleList' item='item' separator=','>(#{item.id})</foreach></script>")@Overrideint insert(SysUser entity);
}
这是注解方式的写法,如果需要XML方式的写法可以自己修改。collection属性设置的值(