添加新对想象的时候 使用selectKey的时候id反不会回来,不用selectKey就会报这个异常:
Caused by: org.apache.ibatis.executor.ExecutorException: Error getting generated key or setting result to parameter object. Cause: org.apache.ibatis.binding.BindingException: Parameter 'id' not found. Available parameters are [user, param1]
代码如下===================
xml:
dao:
controller:
User:
mapper.xml 文件中执行的 insert sql
我们执行一个insert操作,参数是一个User对象
<insert id="insert" parameterType="com.test.User">
insert into user(loginName,loginPwd) values(#{loginName},#{loginPwd});
</insert>
插入之后需要在方法中使用当前插入值的自增id时,只需要增加下面一句就可以
// 注意这里面的 keyProperty="userId" 是你java bean 中对应的id属性名,我这里用的是userId
<selectKey resultType="java.lang.String" order="AFTER" keyProperty="userId">
SELECT LAST_INSERT_ID();
</selectKey>
<insert id="insert" parameterType="com.test.User">
insert into user(loginName,loginPwd) values(#{loginName},#{loginPwd});
<selectKey resultType="java.lang.String" order="AFTER" keyProperty="userId">
SELECT LAST_INSERT_ID();
</selectKey>
</insert>
User 类
public class User {
/**
* 用户id
* /
private String userId;
/**
* 用户登录名
*/
private String loginName;
/**
* 登录密码
* /
private String loginPwd;
...
set...
get...
}
public User regist()
将dao接口返回值改为对象即可
插入数据传的是对象么?要是对象的话直接用这个对象调用getId方法就可以得到id了
对象问题· 要用getId 才行
你的这个xml里面没有写返回的配置吧 不过一般返回的数据会是返回插入数据库成功的条数,
入参类型已经定义是User自定义类型了,regist(@Param("user") User user) 直接写成 regist(User user) 不就好了
都回答的什么东西。
题主,在你的里面,insert into开始前加上下面的东西
SELECT LAST_INSERT_ID()
该方法会返回一个 String还是int类型的主键,自己试试吧。
都回答的什么东西。
题主,在你的里面,insert into开始前加上下面的东西
SELECT LAST_INSERT_ID()
该方法会返回一个 String还是int类型的主键,自己试试吧。
User里有 字段 id的 setter么? 这个err应该是set result时候的.
调用ID 用楼上两位说的 user.getId() 不要用返回值
传入的参数类型已经定义是User类型,regist(@Param("user") User user) 可以直接写成 regist(User user) 便可以了
我定义的userId是String类型的, 题主需要对照自己的修改一下