Mybatis-Plus ActiveRecord

ActiveRecord也属于ORM(对象关系映射)层,由Rails最早提出,遵循标准的ORM模型:表映射到记录,记录映射到对象,字段映射到对象属性。配合遵循的命名和配置惯例,能够很大程度的快速实现模型的操作,而且简洁易懂。

ActiveRecord的主要思想是:
  • 每一个数据库表对应创建一个类,类的每一个对象实例对应于数据库中表的一行记录,通常表的每个字段在类中都有相应的Field;
  • ActiveRecord同时负责把自己持久化,在ActiveRecord中封装了对数据库的访问,即CURD;
  • ActiveRecord是一种领域模型(Domain Model),封装了部分业务逻辑。

简而言之,AR建立了Java对象与数据库表逻辑上的直接映射,方便了程序的编写。而在MP中使用AR非常简单,只需让pojo类继承Model<>类即可。

例:

@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("tb_user")
public class User extends Model<User> {
    //lombok注解自动为对象创建各种方法
    private String userName;

    private String name;
    private Integer age;

    @TableId(type = IdType.AUTO)//IdType主键类型,指定为自增长
    private Long id;

    @TableField(value = "email")//映射至表中不同命字段
    private String mail;

    @TableField(exist = false)//表中不存在
    private int power;

    @TableField(select = false)//查询命令不返回该字段值
    private String password;

}

测试:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath*:applicationContext.xml"})
public class test {
    //mapper不必再注入,但映射关系、配置类不能缺少,即UserMapper.java与applicationContext.xml的配置
    /*@Autowired
    private UserMapper mapper;*/

    @Test
    public void testSelectById(){
        User user = new User();
        user.setId(4L);

        //调用AR的按id查询
        User result = user.selectById();
        System.out.println(result);
    }

    @Test
    public void testInsert(){
        User user = new User();
        user.setUserName("diaochan");
        user.setPassword("123456");
        user.setAge(20);
        user.setName("貂蝉");
        user.setMail("diaochan@itcast.cn");

        // 调用AR的insert方法进行插入数据
        boolean result = user.insert();
        System.out.println(result);
    }

    @Test
    public void testUpdate(){
        User user = new User();
        user.setId(3L);// 查询条件
        user.setAge(31); // 更新的数据

        boolean result = user.updateById();
        System.out.println(result);
    }

    @Test public void testDelet() {
        User user = new User();
        user.setId(7L);

        boolean result = user.deleteById();
        System.out.println(result);
    }

    @Test public void testSelect() {
        User user = new User();
        QueryWrapper<User> userQueryWrapper = new QueryWrapper<>();

        userQueryWrapper.le("age","20");

        //按条件查询
        List<User> users = user.selectList(userQueryWrapper);
        for (User user1 : users) {
            System.out.println(user1);
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值