• Mybatis-Plus ActiveRecord


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

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

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

    例:

    1. @Data
    2. @NoArgsConstructor
    3. @AllArgsConstructor
    4. @TableName("tb_user")
    5. public class User extends Model {
    6. //lombok注解自动为对象创建各种方法
    7. private String userName;
    8. private String name;
    9. private Integer age;
    10. @TableId(type = IdType.AUTO)//IdType主键类型,指定为自增长
    11. private Long id;
    12. @TableField(value = "email")//映射至表中不同命字段
    13. private String mail;
    14. @TableField(exist = false)//表中不存在
    15. private int power;
    16. @TableField(select = false)//查询命令不返回该字段值
    17. private String password;
    18. }

    测试:

    1. @RunWith(SpringJUnit4ClassRunner.class)
    2. @ContextConfiguration(locations = {"classpath*:applicationContext.xml"})
    3. public class test {
    4. //mapper不必再注入,但映射关系、配置类不能缺少,即UserMapper.java与applicationContext.xml的配置
    5. /*@Autowired
    6. private UserMapper mapper;*/
    7. @Test
    8. public void testSelectById(){
    9. User user = new User();
    10. user.setId(4L);
    11. //调用AR的按id查询
    12. User result = user.selectById();
    13. System.out.println(result);
    14. }
    15. @Test
    16. public void testInsert(){
    17. User user = new User();
    18. user.setUserName("diaochan");
    19. user.setPassword("123456");
    20. user.setAge(20);
    21. user.setName("貂蝉");
    22. user.setMail("diaochan@itcast.cn");
    23. // 调用AR的insert方法进行插入数据
    24. boolean result = user.insert();
    25. System.out.println(result);
    26. }
    27. @Test
    28. public void testUpdate(){
    29. User user = new User();
    30. user.setId(3L);// 查询条件
    31. user.setAge(31); // 更新的数据
    32. boolean result = user.updateById();
    33. System.out.println(result);
    34. }
    35. @Test public void testDelet() {
    36. User user = new User();
    37. user.setId(7L);
    38. boolean result = user.deleteById();
    39. System.out.println(result);
    40. }
    41. @Test public void testSelect() {
    42. User user = new User();
    43. QueryWrapper userQueryWrapper = new QueryWrapper<>();
    44. userQueryWrapper.le("age","20");
    45. //按条件查询
    46. List users = user.selectList(userQueryWrapper);
    47. for (User user1 : users) {
    48. System.out.println(user1);
    49. }
    50. }
    51. }

  • 相关阅读:
    【附源码】计算机毕业设计JAVA家庭记账系统
    macOS配置java环境变量
    音乐APP首页框架搭建
    【Rust】001-基础语法:变量声明及数据类型
    Tensorflow2 中对模型进行编译,不同loss函数的选择下输入数据格式需求变化
    2023最新SSM计算机毕业设计选题大全(附源码+LW)之java寻彝问药网站yv0v2
    【POJ No. 3368】 最频繁值 Frequent values
    Ubuntu如何创建一个子用户并赋与管理员权限
    一百九十二、Flume——Flume数据流监控工具Ganglia单机版安装
    numpy教程:Array-Oriented Programming with Arrays 数组导向编程
  • 原文地址:https://blog.csdn.net/qq_57389269/article/details/126086669