如何将类型为java.util.Set的数据插入到类型为set(mysql set type)的mysql db列中?
我的POJO:
public class UserTEO
{
private Integer id;
private Set changedfieldset;
//getters and setters
}
xml文件:
<sqlMap namespace="user">
<typeAlias alias="USER" type="com.howtodoinjava.ibatis.demo.dto.UserTEO" />
<insert id="addUser" parameterClass="USER">
INSERT INTO USERINFO (ID,CHANGEDFIELDSET)
VALUES(#id#,#changedfieldset#);
</insert>
</sqlMap>
数据库:
CREATE TABLE USERINFO
(
ID INT,
CHANGEDFIELDSET SET('')
);
例外:
com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred in user.xml.
--- The error occurred while applying a parameter map.
--- Check the user.addUser-InlineParameterMap.
--- Check the parameter mapping for the 'changedfieldset' property.
请帮忙。谢谢!
答案 0 :(得分:1)
我猜你明确想与(旧的)ibatis合作,而不是Mybatis。 所以这是我引用的documentation。
Mysql SET需要一个由逗号分隔的设置值字符串,不带空格:StringUtils.join(set, ",")
。因此,您必须使用类型处理程序将java Set转换为此字符串:Extend BaseTypeHandler,特别重写setParameter
方法。
然后打电话如下:
INSERT INTO USERINFO (ID,CHANGEDFIELDSET)
VALUES(#id#,#changedfieldset,handler=YourCustomTypeHandlerTypeAlias#)