我刚学ibatis xml中配置为 <select id="login" parameterClass="User" resultMap="user">
SELECT * FROM users where userName=#userName# and password=#password#
</select>

<insert id="register" parameterClass="User">

insert into users(uid,userName,password,userType) values  
                            (#uid# ,#userName# ,#password#,#userType#);  
</insert>JAVA代码中如下配置 User user = new User();
// user.setUid(10);
user.setUserName(userName);
user.setPassword(password);
user.setUserType("1");
boolean bool = SpringUtil.getBeans().getUserDao().insert(user);
现在是可以进行插入的,但是表的主键是我在这里设置的user.setUid(10);,
[size=12px][/如果数据库表的主键是自增的数字主键如何处理????如果没有自增的数字主键,ibatis 如何处理??????size]

解决方案 »

  1.   


    <insert id="insertUser" parameterClass="User">  insert into t_user values (       null,#username#,#password#,#,#userType#  )
    //如果主键是自动生成的,则其返回值可以通过<selectKey>标签来设置//如果不通过<selectKey>标签来设置,则返回值为空!
      <selectKey resultClass="int" keyProperty="id">       SELECT @@IDENTITY AS ID  </selectKey>  </insert>
      

  2.   

    我用的是MYSQL,使用SELECT @@IDENTITY AS ID
    每次查到的都是0
      

  3.   

    既然是自增字段,为什么要获得呢?
    只有数据保存后,才能通过查询对象获得
    如果没有自增的数字主键,ibatis 如何处理:
    ibatis不会负责帮你生成主键,需要你自己指定,ibatis 只负责数据的处理,不负责数据的生成
      

  4.   

    谢谢2楼,
    我把数据库表修改为主键自增DROP TABLE IF EXISTS  `store`.`users`;
    CREATE TABLE  `store`.`users` (
      `uid` int auto_increment primary key ,
      `userName` varchar(20) NOT NULL,
      `password` varchar(32) NOT NULL,
      `userType` varchar(20) NOT NULL 
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    然后配置修改为 <insert id="insertProduct-MYSQL" parameterClass="User">   
     insert into users values(null,#userName# ,#password#,#userType#);
      <selectKey resultClass="int" keyProperty="uid">
            SELECT @@IDENTITY AS UID
           </selectKey> 
    </insert>  现在操作都成功了,多谢哈