Mybatis--------------------增删改查、主键返回

import com.dong.model.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.List;

public class TestDemo {
    SqlSession sqlSession;

    @Before
    public void before() throws IOException {
        InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        sqlSession = sqlSessionFactory.openSession();

    }

    @After
    public void after() throws IOException {
        sqlSession.close();

    }
    //根据id查询数据
    @Test
    public void Test01(){
        User user= sqlSession.selectOne("findUserById",10);
        System.out.println(user);
    }
    //根据username模糊查询数据
    @Test
    public void Test02(){
        List<User> user = sqlSession.selectList("findUserByName", "张");
        System.out.println(user);
    }
    //增
    @Test
    public void Test03(){
        User user=new User("dong","男",new Date(),"深圳");

      int rownum = sqlSession.insert("InsertUser", user);
      sqlSession.commit();
        System.out.println("受影响的行:"+rownum);
    }
    //改
    @Test
    public void Test04(){
        User user=new User();
        user.setSex("2");
     user.setId(28);
        int rownum = sqlSession.update("UpdateUser", user);
        sqlSession.commit();
        System.out.println("受影响的行:"+rownum);
    }
    //删

    @Test
    public void Test05(){

        int rownum = sqlSession.delete("deleuser", 28);
        sqlSession.commit();
        System.out.println("受影响的行:"+rownum);
    }

    //返回最后插入的id

    @Test
    public void Test06(){

        User user=new User("dong","男",new Date(),"深圳");

        int rownum = sqlSession.insert("InsertUser2", user);
        sqlSession.commit();
        System.out.println("id:"+use
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在使用Mybatis-Plus框架进行增、删、改、查操作,获取主键的方式有多种。 1.自动生成主键 Mybatis-Plus框架提供了主键生成策略,可以自动生成主键值,并将其赋给实体类属性。如: ``` User user = new User(); user.setName("张三"); user.setAge(20); user.setEmail("zhangsan@163.com"); // 插入,自动生成主键 userMapper.insert(user); // 获取主键值 Long id = user.getId(); ``` 2.手动设置主键 在实体类中添加@Id注解,指定主键属性。手动设置主键,需要在插入记录设置主键值。如: ``` @Table(value = "user") public class User { @Id private Long id; private String userName; private Integer age; private String email; // getter、setter方法 } // 在增加记录手动设置主键值 User user = new User(); user.setId(1001L); user.setUsername("张三"); user.setAge(20); user.setEmail("zhangsan@163.com"); // 插入记录,手动设置主键 userMapper.insert(user); // 获取主键值 Long id = user.getId(); ``` 3.使用MySQL自增主键 在实体类的@Id注解中设置@GeneratedValue注解的strategy属性为GenerationType.IDENTITY,表示使用数据库的自增主键。如: ``` @Table(value = "user") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) // MySQL自增主键 private Long id; private String userName; private Integer age; private String email; // getter、setter方法 } // 插入记录,返回自动生成的主键值 User user = new User(); user.setUserName("张三"); user.setAge(20); user.setEmail("zhangsan@163.com"); // 插入自动生成主键 userMapper.insert(user); // 获取主键值 Long id = user.getId(); ``` 以上是使用MyBatis-Plus框架获取主键的三种方法。 ### 回答2: mybatis-plus 是基于 MyBatis 的增强工具,它提供了很多方便的功能。它的主键自动生成方式分为两种:自增主键和UUID主键,获取主键的方法也有所不同。 对于自增主键,使用insert方法,可以通过返回值的方式获取自增生成的主键MyBatis-Plus提供了三种方法来获取自增主键:insert、insertBatch和insertBatchSomeColumn。 1. insert方法 在使用insert方法,通过返回值获取自增生成的主键,如下: ```java User user = new User(); user.setName("test"); user.setAge(18); int success = userMapper.insert(user); if (success == 1) { System.out.println("插入成功,主键ID为:" + user.getId()); } ``` 当插入成功,可以通过user.getId()获取自增生成的主键。 2. insertBatch方法 在使用insertBatch方法,传入的是一个List对象。如果这个List里面的元素的id属性为空,那么MyBatis-Plus会自动生成一个主键,并将此id赋值给List中的元素,如下: ```java List<User> userList = new ArrayList<>(); for (int i = 0; i < 10; i++) { User user = new User(); user.setName("test" + i); user.setAge(18 + i); userList.add(user); } int success = userMapper.insertBatch(userList); if (success == userList.size()) { for (User user : userList) { System.out.println("插入成功,主键ID为:" + user.getId()); } } ``` 当插入成功,可以通过每个元素的user.getId()获取自增生成的主键。 3. insertBatchSomeColumn方法 在使用insertBatchSomeColumn方法,需要在传入的DTO中指定需要生成主键的列,并且要将这些列的值都设置为null。接下来的操作与insertBatch方法类似,只是在DTO中指定需要生成主键的列,如下: ```java List<User> userList = new ArrayList<>(); for (int i = 0; i < 10; i++) { User user = new User(); user.setName("test" + i); user.setAge(18 + i); user.setId(null); userList.add(user); } int success = userMapper.insertBatchSomeColumn(userList); if (success == userList.size()) { for (User user : userList) { System.out.println("插入成功,主键ID为:" + user.getId()); } } ``` 当插入成功,可以通过每个元素的user.getId()获取自增生成的主键。 对于UUID主键,使用insert方法,在插入数据后,可以通过获取实体类Id属性的值来获取UUID主键,如下: ```java User user = new User(); user.setName("test"); user.setAge(18); userMapper.insert(user); System.out.println("插入成功,主键ID为:" + user.getId()); ``` 当插入成功,可以通过user.getId()获取UUID主键。 综上所述,mybatis-plus 获取主键是非常方便的,而且还支持多种不同的主键生成方式。对于业务开发中常用的自增主键和UUID主键mybatis-plus都提供了对应的获取主键的方式。 ### 回答3: Mybatis-plus是一个基于Mybatis的开源框架,提供了很多Mybatis的扩展功能,其中获取主键就是其中之一。在使用Mybatis-plus进行数据库操作,获取主键的方法有多种,具体如下: 1.自增类型的主键 如果数据表中的主键是通过自增方式生成的,那么在插入新数据主键会自动增加,Mybatis-plus会将新增的主键返回给我们。 示例代码: ```java User user = new User(); user.setName("张三"); user.setAge(18); user.setGender("男"); userMapper.insert(user); System.out.println("新增用户的主键为:" + user.getId()); ``` 2.非自增类型的主键 如果数据表中的主键不是自增类型,我们需要自己为其指定主键Mybatis-plus提供了一个IdWorker工具类,可以生成各种类型的主键。 示例代码: ```java Long id = IdWorker.getId(); //生成主键 User user = new User(); user.setId(id); user.setName("张三"); user.setAge(18); user.setGender("男"); userMapper.insert(user); System.out.println("新增用户的主键为:" + id); ``` 3.仅返回新增主键 如果我们只需要获取新增数据的主键,而不需要获取其他字段的值,可以使用insert(…)方法的返回值进行获取。 示例代码: ```java User user = new User(); user.setName("张三"); user.setAge(18); user.setGender("男"); int result = userMapper.insert(user); if(result > 0){ System.out.println("新增用户的主键为:" + user.getId()); } ``` 4.使用注解返回主键 如果我们在实体类中通过注解指定了主键字段,那么在插入数据主键会自动赋值,可通过实体类对象获取主键。 示例代码: ```java public class User{ @TableId(type = IdType.AUTO) //指定主键,type为主键类型,AUTO为自增 private Long id; private String name; private Integer age; private String gender; //省略get/set方法 } User user = new User(); user.setName("张三"); user.setAge(18); user.setGender("男"); userMapper.insert(user); System.out.println("新增用户的主键为:" + user.getId()); ``` 以上是Mybatis-plus获取主键的几种方法,选择哪种方法取决于实际需求,一般情况下我们可以通过自增类型的主键或IdWorker工具类进行获取主键
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值