MyBatis Example And与Or例子

需求 : (条件1 and 条件2) or ( 条件3 and 条件4)
      xxxExample example = new xxxExample();
      xxxExample.Criteria c1 = example.createCriteria();
                          c1.andOne(one).andTwo(two);
      
      xxxExample.Criteria c2 = example.createCriteria();
                          c2.andThree(three).andFour(four); 
      example.or(c2);  
需求 : 条件1 and (条件2 or 条件3)
  • 思路 : 分拆 : A and ( B or C ) ==> ( A and B ) or ( A and C )
	  xxxExample example = new xxxExample();
      xxxExample.Criteria c1 = example.createCriteria();
                          c1.andOne(one).andTwo(two);
      
      xxxExample.Criteria c2 = example.createCriteria();
                          c2.andOne(one).andThree(three); 
      example.or(c2);       
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
MyBatis支持在Mapper XML中使用多个主键进行insert和update操作。 在Mapper XML,可以使用<selectKey>元素来生成主键,然后将其作为参数传递给insert或update语句。 例如,假设我们有一个User表,有两个主键分别为id和username。我们可以使用以下Mapper XML来插入一条新的用户记录: ```xml <insert id="insertUser" parameterType="com.example.User"> <selectKey keyProperty="id" resultType="int" order="BEFORE"> SELECT NEXTVAL('user_id_seq') </selectKey> INSERT INTO User (id, username, password) VALUES (#{id}, #{username}, #{password}) </insert> ``` 在这个例子中,我们使用<selectKey>元素来生成id主键,然后将其作为参数传递给INSERT语句。 类似地,我们可以使用以下Mapper XML来更新一条用户记录: ```xml <update id="updateUser" parameterType="com.example.User"> UPDATE User SET username = #{username}, password = #{password} WHERE id = #{id} AND username = #{username} </update> ``` 在这个例子中,我们使用id和username两个主键来确定要更新的记录,并且将它们作为参数传递给UPDATE语句。 需要注意的是,如果使用多个主键进行insert或update操作,那么必须在实体类中定义一个包含所有主键的复合主键类。例如,在上面的例子中,我们可以定义一个UserKey类来表示id和username的复合主键: ```java public class UserKey { private int id; private String username; // getters and setters } ``` 然后,在User类中使用UserKey类作为主键: ```java public class User { private UserKey key; private String password; // getters and setters } ``` 这样,我们就可以在Mapper XML中使用UserKey类来表示复合主键。例如,在上面的例子中,我们可以将UserKey作为参数类型,如下所示: ```xml <insert id="insertUser" parameterType="com.example.UserKey"> <selectKey keyProperty="id" resultType="int" order="BEFORE"> SELECT NEXTVAL('user_id_seq') </selectKey> INSERT INTO User (id, username, password) VALUES (#{id}, #{username}, #{password}) </insert> <update id="updateUser" parameterType="com.example.UserKey"> UPDATE User SET password = #{password} WHERE id = #{id} AND username = #{username} </update> ``` 总的来说,使用多个主键进行insert和update操作并不难,只需要在Mapper XML中正确地配置<selectKey>元素和参数类型即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值