Mybatis-Plus实现简单的增删改查 实体类上的注解(二)

简介: Mybatis-Plus实现简单的增删改查 实体类上的注解(二)

2.3 改(update)

根据主键id修改(updateById)


@Test 
public void updateByIdTest() {
    User user = new User();
    user.setId(4L);
    user.setName("张三");
    user.setAge(20);
    // UPDATE user SET name=?, age=? WHERE id=?
    int result = mapper.updateById(user);
    System.out.println("受影响的行数: " + result); 
}


2.4 查(select)

根据主键id查找一条记录(selectById)


@Test public void selectTest() {
    // SELECT id,name,age,email FROM user WHERE id=?
    User user = mapper.selectById(4L);
    System.out.println("查询结果为:" + user); 
}


根据主键id查找多条记录(selectBatchIds)


@Test 
public void selectByBatchIdsTest() {
   List<Long> list = Arrays.asList(4L, 5L);
   // SELECT id,name,age,email FROM user WHERE id IN ( ? , ? )
   List<User> users = mapper.selectBatchIds(list);
   System.out.print("查询结果为:");
   users.forEach(System.out::println); 
}


多条件查询(selectByMap)


@Test 
public void selectByMapTest() {
    HashMap<String, Object> map = new HashMap<>();
    map.put("name", "张三");
    map.put("age", 20);
    // SELECT id,name,age,email FROM user WHERE name = ? AND age = ?
    List<User> users = mapper.selectByMap(map);
    System.out.print("查询结果为:");
    users.forEach(System.out::println); 
}


查询表中所有的记录(selectList)


@Test 
public void selectListTest() {
    // SELECT id,name,age,email FROM user
    List<User> users = mapper.selectList(null);
    users.forEach(System.out::println); 
}


mapper层增删改查方法中的小知识点


⚠ 所有的增删改方法返回值都是受影响的行(记录)数

⚠ 以上都是单表的简单增删改查操作,如果这些功能无法满足你的需求,可以自定义SQL。可以在默认的路径(resources文件夹下的mapper文件夹)下创建mapper映射文件,或者在别的地方创建映射文件使用配置文件指定(mybatis-plus.mapper-locations),其他的操作和mybatis一样(接口方法、映射文件、调用方法)


3 service层的CRUD方法

 service层接口继承IService接口并传入需要操作的实体类泛型


public interface UserService extends IService<User> {
}


 service接口的实现类除了实现接口之外,还要继承ServiceImpl类并传入传泛型(mapper层接口,实体类),这样做的好处是还可以在实现类里实现自定义业务方法


@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}


3.1 批量添加或者更新

批量添加saveBatch



@Test
public void saveBatchTest() {
    // INSERT INTO user ( id, name, age ) VALUES ( ?, ?, ? )
    List<User> list = new ArrayList<>();
    for (int i = 0; i < 10; i++) {
        User user = new User();
        user.setName("tom" + i);
        user.setAge(20 + i);
        list.add(user);
    }
    boolean b = userService.saveBatch(list);
    System.out.println(b);
}


批量添加或者更新saveOrUpdateBatch

 第二个方法既可以用于批量添加还可以皮力量更新,判断是批量添加还是更新的依据是:看传入的列表中实体类对象是否设置了id属性或者说这个id值在表中是否存在,如果设置了id且id在表中存在的话就是批量更新,如果不设置id属性或者表中没有这个字段值的话就是批量添加。简而言之,有则改无则添


// 批量修改(因为user对象设置的id属性在表中存在)
@Test
public void saveOrUpdateBatchTest() {
    // UPDATE user SET name=?, age=? WHERE id=?
    List<User> list = new ArrayList<>();
    for (int i = 0; i < 10; i++) {
        User user = new User();
        user.setId(10L + i);
        user.setName("jack" + i);
        user.setAge(20 + i);
        list.add(user);
    }
    boolean b = userService.saveOrUpdateBatch(list);
    System.out.println(b);
}


3.2 查询表中总记录数

@Test
public void getCountTest() {
    // SELECT COUNT( * ) FROM user
    long count = userService.count();
    System.out.println(count);
}


相关文章
|
1月前
|
SQL XML Java
Mybatis基础使用知识(注解)
mybatis 通过 xml 或注解的方式将要执行的各种 statement 配置起来,并通过java对象和statement中sql的动态参数进行映射生成最终执行的sql语句。 最后 mybatis 框架执行sql 并将结果映射为java对象并返回。采用ORM(对象关系映射)思想解决了实体和数据库映射问题,对jdbc进行了封装,屏蔽了jdbc api 底层访问细节,使我们不用与jdbc api 打交道,就可以完成对数据库的持久化操作。
352 0
|
4月前
|
SQL XML Java
MyBatis注解的运用于条件搜索实践
通过上述的实践,我们可以看出MyBatis注解不仅能够实现条件搜索的需求,还能够提供灵活而强大的SQL构造能力,极大地简化了代码的复杂度,提高了开发效率。在实际的项目开发中,结合实际的业务需求合理选择MyBatis的配置方式(注解或XML),能够让数据持久层代码变得更加清晰和易维护。
112 11
|
6月前
|
存储 Java 数据库连接
Mybatisplus中的主要使用注解
3.有些注解需要配合其他配置使用。例如,@Version需要配合乐观锁插件使用,@EnumValue需要配合对应的TypeHandler使用。
326 11
|
7月前
|
SQL XML Java
MyBatis——选择混合模式还是全注解模式?
在MyBatis开发中,Mapper接口的实现方式有两种:全注解模式和混合模式。全注解模式直接将SQL嵌入代码,适合小规模、简单逻辑项目,优点是直观简洁,但复杂查询时代码臃肿、扩展性差。混合模式采用接口+XML配置分离的方式,适合大规模、复杂查询场景,具备更高灵活性与可维护性,但学习成本较高且调试不便。根据项目需求与团队协作情况选择合适模式至关重要。
154 4
|
8月前
|
人工智能 Java 数据库连接
MyBatis Plus 使用 Service 接口进行增删改查
本文介绍了基于 MyBatis-Plus 的数据库操作流程,包括配置、实体类、Service 层及 Mapper 层的创建。通过在 `application.yml` 中配置 SQL 日志打印,确保调试便利。示例中新建了 `UserTableEntity` 实体类映射 `sys_user` 表,并构建了 `UserService` 和 `UserServiceImpl` 处理业务逻辑,同时定义了 `UserTableMapper` 进行数据交互。测试部分展示了查询、插入、删除和更新的操作方法及输出结果,帮助开发者快速上手 MyBatis-Plus 数据持久化框架。
630 0
|
8月前
|
XML Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——基于注解的整合
本文介绍了Spring Boot集成MyBatis的两种方式:基于XML和注解的形式。重点讲解了注解方式,包括@Select、@Insert、@Update、@Delete等常用注解的使用方法,以及多参数时@Param注解的应用。同时,针对字段映射不一致的问题,提供了@Results和@ResultMap的解决方案。文章还提到实际项目中常结合XML与注解的优点,灵活使用两者以提高开发效率,并附带课程源码供下载学习。
706 0
|
5月前
|
Java 数据库连接 数据库
Spring boot 使用mybatis generator 自动生成代码插件
本文介绍了在Spring Boot项目中使用MyBatis Generator插件自动生成代码的详细步骤。首先创建一个新的Spring Boot项目,接着引入MyBatis Generator插件并配置`pom.xml`文件。然后删除默认的`application.properties`文件,创建`application.yml`进行相关配置,如设置Mapper路径和实体类包名。重点在于配置`generatorConfig.xml`文件,包括数据库驱动、连接信息、生成模型、映射文件及DAO的包名和位置。最后通过IDE配置运行插件生成代码,并在主类添加`@MapperScan`注解完成整合
1025 1
Spring boot 使用mybatis generator 自动生成代码插件
|
10月前
|
前端开发 Java 数据库连接
Java后端开发-使用springboot进行Mybatis连接数据库步骤
本文介绍了使用Java和IDEA进行数据库操作的详细步骤,涵盖从数据库准备到测试类编写及运行的全过程。主要内容包括: 1. **数据库准备**:创建数据库和表。 2. **查询数据库**:验证数据库是否可用。 3. **IDEA代码配置**:构建实体类并配置数据库连接。 4. **测试类编写**:编写并运行测试类以确保一切正常。
471 2
|
Java 数据库连接 Maven
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和MyBatis Generator,使用逆向工程来自动生成Java代码,包括实体类、Mapper文件和Example文件,以提高开发效率。
601 2
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
522 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块