Spring Boot 2.X (19): интегрируйте mybatis-plus для эффективной разработки

Spring Boot

предисловие

Ранее я представил интеграцию SpringBoot с Mybatis для реализации операций добавления, удаления, модификации и запросов к базе данных, а также дал два способа реализации интерфейса преобразователя: xml и аннотации. В этой статье будут представлены общие примеры mybats-plus, упрощающие обычные операции CRUD.

mybatis-plus

MyBatis-Plus (сокращенно MP) — это инструмент расширения для MyBatis, который только дополняет, а не изменяет на основе MyBatis, создан для упрощения разработки и повышения эффективности.

Изучите mybatis-plus:mp.baomidou.com/guide

Общие примеры

1. Строительство проекта

1.1 pom.xml

<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
			<exclusions>
				<exclusion>
					<groupId>org.junit.vintage</groupId>
					<artifactId>junit-vintage-engine</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		
		<!-- 热部署模块 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<optional>true</optional> <!-- 这个需要为 true 热部署才有效 -->
		</dependency>

		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus-boot-starter</artifactId>
			<version>3.3.0</version>
		</dependency>
	</dependencies>

1.2 application.yaml

# spring setting
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/db_test?useUnicode=true&characterEncoding=UTF-8&useSSL=false
    username: root
    password: zwqh@0258

1.3 Класс сущности UserEntity

@TableName(value="t_user")
public class UserEntity {

	@TableId(value="id",type=IdType.AUTO)
	private Long id;
	private String userName;
	private String userSex;
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getUserSex() {
		return userSex;
	}
	public void setUserSex(String userSex) {
		this.userSex = userSex;
	}
	
}

@TableName указывает имя таблицы базы данных, иначе таблица запросов по умолчанию будет указывать на user_entity, @TableId(value="id", type=IdType.AUTO) указывает первичный ключ базы данных, иначе будет сообщено об ошибке.

1.4 Слой Дао UserDao

Наследовать BaseMapper, T представляет соответствующий класс сущности

public interface UserDao extends BaseMapper<UserEntity>{

}

1.5 Стартовый класс

Добавить класс @mapperscan не придется начать с помощью @mapper userdao комментарий.

@SpringBootApplication
@MapperScan("cn.zwqh.springboot.dao")
public class SpringBootMybatisPlusApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringBootMybatisPlusApplication.class, args);
	}

}

1.6 конфигурация плагина пагинации

@Configuration
public class MybatisPlusConfig {
	 /**
     *   mybatis-plus分页插件
     */
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        PaginationInterceptor page = new PaginationInterceptor();
        page.setDialectType("mysql");
        return page;
    }
 
}

2. Пример

2.1 Новый

Новые пользователи
UserEntity user=new UserEntity();
user.setUserName("朝雾轻寒");
user.setUserSex("男");
userDao.insert(user);         

2.2 Модификация

Изменить пользователя по идентификатору
UserEntity user=new UserEntity();
user.setUserName("朝雾轻晓");
user.setUserSex("男");
user.setId(25L);
userDao.updateById(user);
Изменить сущность пользователя в соответствии с условиями
UserEntity user=new UserEntity();
user.setUserSex("女");
userDao.update(user,new QueryWrapper<UserEntity>().eq("user_name", "朝雾轻寒"));

2.3 Запрос

запросить пользователя по id
UserEntity user = userDao.selectById(id);
Запросить общее количество записей на основе условий сущности
int count = userDao.selectCount(new QueryWrapper<UserEntity>().eq("user_sex", "男"));
В соответствии с условием объекта запросите запись и верните объект
QueryWrapper<UserEntity> queryWrapper=new QueryWrapper<UserEntity>();
		UserEntity user=new UserEntity();
		user.setUserName("朝雾轻寒");
		user.setUserSex("男");
		queryWrapper.setEntity(user);
user = userDao.selectOne(queryWrapper);		

Если в таблице есть два или более одинаковых данных, будет сообщено об ошибке, которую можно использовать для определения того, существует ли уже определенный тип данных.

Возвращает значение первого поля в соответствии с запросом условия объекта (возвращает список идентификаторов)
QueryWrapper<UserEntity> queryWrapper=new QueryWrapper<UserEntity>();
		UserEntity user=new UserEntity();
		user.setUserSex("男");
		queryWrapper.setEntity(user);
List<Object> objs= userDao.selectObjs(queryWrapper);	
Возврат нескольких фрагментов данных на основе запроса условия карты
Map<String, Object> map=new HashMap<String, Object>();
		map.put("user_name", username);
		map.put("user_sex",sex);
List<UserEntity> list = userDao.selectByMap(map);		
Запрос возвращает несколько данных (список) в соответствии с сущностью условий.
Map<String, Object> map=new HashMap<String, Object>();
		map.put("user_sex","男");
List<UserEntity> list = userDao.selectList(new QueryWrapper<UserEntity>().allEq(map));		
Возврат нескольких фрагментов данных на основе запроса условия объекта (List> )
Map<String, Object> map=new HashMap<String, Object>();
		map.put("user_sex","男");
List<Map<String, Object>> list = userDao.selectMaps(new QueryWrapper<UserEntity>().allEq(map));
Пакетный запрос по ID
List<Long> ids=new ArrayList<Long>();
		ids.add(1L);
		ids.add(2L);
		ids.add(3L);
List<UserEntity> list = userDao.selectBatchIds(ids);	

Список идентификаторов первичного ключа (не может быть нулевым и пустым)

Пейджинговый запрос
Page<UserEntity> page=userDao.selectPage(new Page<>(1,5), new QueryWrapper<UserEntity>().eq("user_sex", "男"));
Page<Map<String, Object>> page=userDao.selectMapsPage(new Page<>(1,5), new QueryWrapper<UserEntity>().eq("user_sex", "男"));

Сначала необходимо настроить bean-компонент плагина пейджинга, иначе пейджинг будет недействительным. Если есть pagehelper, его нужно сначала удалить, чтобы избежать конфликтов.

новая страница (1,5), 1 представляет эту страницу, размер страницы представляет 5.

2.4 Удалить

удалить пользователя по id
userDao.deleteById(1);
Удалить пользователя на основе состояния объекта
userDao.delete(new QueryWrapper<UserEntity>().eq("id", 1));
Удаление пользователей на основе условий карты
Map<String, Object> map=new HashMap<String, Object>();
		map.put("user_name", "zwqh");
		map.put("user_sex","男");
		userDao.deleteByMap(map);
Пакетное удаление по ID
List<Long> ids=new ArrayList<Long>();
		ids.add(1L);
		ids.add(2L);
		ids.add(3L);
		userDao.deleteBatchIds(ids);

Список идентификаторов первичного ключа (не может быть нулевым и пустым)

резюме

В этой статье представлена ​​реализация интерфейса CRUD уровня Mapper, связанного с mybatis-plus, а также соответствующий интерфейс CRUD уровня сервиса, который могут использовать заинтересованные партнеры. mybatis-plus действительно повышает эффективность кодирования.

Другие моменты обучения:

  1. mybatis-plus условный конструктор
  2. лямбда-выражение
  3. Общие примечания
  4. ...

Адрес исследования:mp.baomidou.com/guide/

образец кода

github

Облако кода

Если не указано иное, авторские права на эту статью принадлежатутренний туманВсе, пожалуйста, указывайте источник при перепечатке.

Оригинальное название: Spring Boot 2.X (19): интеграция mybatis-plus для эффективной разработки.

Оригинальный адрес: https://www.zwqh.top/article/info/33

Если в статье есть недостатки, добро пожаловать, чтобы внести предложения, и последующая работа улучшится ~

Если статья полезна для вас, пожалуйста, дайте мне как ~

Мой следующий номер общественного беспокойства, статья продолжает обновляться ...