MybatisPlus--2.插入

@RunWith(SpringRunner.class)    // 运行器,可以 SpringBoot 环境下运行 junit 测试
@SpringBootTest                 // 可以运行基于 SpringBoot 的测试
public class TestMpInsert {
    @Autowired
    private EmployeeMapper employeeMapper;

    @Test
    public void testDataSource () {
        List<Employee> list = employeeMapper.selectList(null);
//        Assert.assertEquals(4, list.size());
        list.stream()
                .forEach(System.out::println);
    }

    /**
     * 1.1 新增
     * 注意添加无参的构造方法,可以直接添加  @NoArgsConstructor 无参的构造方法
     */

    @Test
    public void testInsert() {
        Employee employee = new Employee("Jack", "[email protected]", 1, 40, LocalDateTime.now());
        int rows = employeeMapper.insert(employee);
        System.out.println("影响记录数:" + rows);

        List<Employee> employees = employeeMapper.selectList(null);
        employees.stream()
                .map((em) -> em.getLastName().equals("Jack"))
                .forEach(System.out::println);

        List<Employee> employeeList = employees.stream()
                .filter((e) -> e.getLastName().equals("Jack"))
                .collect(Collectors.toList());
        System.out.println(employeeList);
    }

    /**
     * 1.2 常用注解
     * @TableName("tb1_employee")     // 指定表名称
     * @TableId                         // 指定主键 id
     * @TableField("name")             // 指定数据库中的字段名称
     *
     *      当数据库表的名称和我们创建的实体类名称不一致的时候,可以使用 @TableName 指定表
     *      当我们添加数据,省略主键的时候,BaseMapper 自动计算得到的逐渐名称为 id ,
     * 当然在这里是 userId 找不到,所以使用 @TableId 指定主键
     *      当我们的类属性名称和表中的字段不匹配,可以使用 @TableField 指定对应关系
     */

    @Test
    public void testTableAnno() {
        Employee employee = new Employee("Jackjj", "[email protected]", 1, 40, LocalDateTime.now());
        int rows = employeeMapper.insert(employee);
        System.out.println("影响记录数:" + rows);
    }


    /**
     * 1.3 排除非表字段的三种方式
     *  a.将成员变量设置成 transient 使之不参与序列化过程
     *  b.将成员变量设置成 static 也不会参与序列化,lombok 不会为 static 变量设置 get set 方法,要自己写
     *  c.添加 @TableField(exist = false) 设置成不是数据库字段
     *
     *  最后一种最好
     */
    @Test
    public void testNotTable() {
        Employee employee = new Employee("向前", "[email protected]", 1, 40, LocalDateTime.now());
        employee.setRemark("这是一个注释");
        System.out.println(employeeMapper.insert(employee));
    }

}

你可能感兴趣的:(数据库)