Всем привет, мы снова встретились, я ваш друг Цюаньчжаньцзюнь.
В последнее время оно усиливается ITAEM один из команды app Проект - Платформа обучения и обмена для студентов-преподавателей
Состав персонала: Андроид + внешний интерфейс + За кулисами
За кулисами DAO Этот слой извлекает уроки из опыта других команд разработчиков программного обеспечения Huagong и использует новые и мощные возможности. MyBatisPlus
Фреймворк имеет функцию публикации, аналогичную Baidu Tieba:
И если таблица параметров должна быть
Содержимое красного поля на изображении примера: t_user
поля таблицы name
,
Чтобы добиться вышеуказанного отображения сообщений, нам нужно использовать связанные запросы, а сообщений много, поэтому мы должны использовать запросы на пейджинг.
Итак, как реализовать ассоциативный и пейджинговый запрос через MyBatisPlus? Это просто, просто посмотрите вниз.
Это частичная таблица из версии 1.0 моего личного проекта приложения.
Требования: отображать посты
t_question
Все содержимое таблицы является обязательным,t_student
поля name
Для написания этой статьи были извлечены некоторые коды из проекта приложения. Связь между ними следующая:
1. Код размещен github Вверх, если у вас есть вопросы по коду этой статьи, вы можете перейти на github Посмотреть подробности: https://github.com/larger5/MyBatisPlus_page_tables.git
2、entity、mapper、service、controller
использовал MyBatisPlus Генератор кодов автоматически генерирует большинство основных кодов. Метод работы см. в предыдущей статье:
существовать SpringBoot введено в MyBatisPlus Из Регулярная операция
// import упущение
@TableName("t_question")
public class Question implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "Идентификатор первичного ключа вопросов и ответов")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty(value = «идентификатор внешнего ключа студента»)
@TableField("student_id")
private Integer studentId;
@ApiModelProperty(value = "вопроссодержание") private String content;
@ApiModelProperty(value = «Время, когда вопрос был выпущен, когда он был выпущен За кулисами генерируется автоматически")
private Date date;
@ApiModelProperty(value = «Очки за вопросы»)
private Integer value;
// getter、setter упущение
}
// import упущение
@TableName("t_student")
public class Student implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = «Идентификатор первичного ключа студента»)
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty(value = «имя студента»)
private String name;
@ApiModelProperty(value = «Пароль студента»)
private String password;
@ApiModelProperty(value = «Студенческие баллы»)
private Integer points;
@ApiModelProperty(value = «Адрес электронной почты студента»)
private String email;
@ApiModelProperty(value = «Номер студенческого мобильного телефона»)
private String phone;
@ApiModelProperty(value = «Студенческий номер»)
private String num;
@ApiModelProperty(value = «Настоящее имя студента»)
@TableField("true_name")
private String trueName;
// getter、setter упущение
}
// import упущение
public interface StudentMapper extends BaseMapper<Student> {
}
// import упущение
public interface QuestionMapper extends BaseMapper<Question> {
/** * * @param page Объект «Перевернуть страницу», может использоваться как xml Параметры используются напрямую, передавая параметры Page то есть автоматический пейджинг * @return */
@Select("SELECT t_question.*,t_student.`name` FROM t_question,t_student WHERE t_question.student_id=t_student.id")
List<QuestionStudentVO> getQuestionStudent(Pagination page);
}
// import упущение
public interface StudentService extends IService<Student> {
}
// import упущение
public interface QuestionService extends IService<Question> {
Page<QuestionStudentVO> getQuestionStudent(Page<QuestionStudentVO> page);
}
// import упущение
@Service
public class StudentServiceImpl extends ServiceImpl<StudentMapper, Student> implements StudentService {
}
// упущение import
@Service
public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> implements QuestionService {
@Override
public Page<QuestionStudentVO> getQuestionStudent(Page<QuestionStudentVO> page) {
return page.setRecords(this.baseMapper.getQuestionStudent(page));
}
}
// упущение import
@RestController
@RequestMapping("/common")
@EnableSwagger2
public class CommonController {
@Autowired
QuestionService questionService;
@Autowired
StudentService studentService;
@GetMapping("/getAllQuestionByPage/{page}/{size}")
public Map<String, Object> getAllQuestionByPage(@PathVariable Integer page, @PathVariable Integer size) {
Map<String, Object> map = new HashMap<>();
Page<Question> questionPage = questionService.selectPage(new Page<>(page, size));
if (questionPage.getRecords().size() == 0) {
map.put("code", 400);
} else {
map.put("code", 200);
map.put("data", questionPage);
}
return map;
}
@GetMapping("/getAllQuestionWithStudentByPage/{page}/{size}")
public Map<String, Object> getAllQuestionWithStudentByPage(@PathVariable Integer page, @PathVariable Integer size) {
Map<String, Object> map = new HashMap<>();
Page<QuestionStudentVO> questionStudent = questionService.getQuestionStudent(new Page<>(page, size));
if (questionStudent.getRecords().size() == 0) {
map.put("code", 400);
} else {
map.put("code", 200);
map.put("data", questionStudent);
}
return map;
}
}
// упущение import
@EnableTransactionManagement
@Configuration
@MapperScan("com.cun.app.mapper")
public class MybatisPlusConfig {
/** * Плагин пагинации */
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
/** * Распечатать sql */
@Bean
public PerformanceInterceptor performanceInterceptor() {
PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();
//Форматирование оператора sql
Properties properties = new Properties();
properties.setProperty("format", "true");
performanceInterceptor.setProperties(properties);
return performanceInterceptor;
}
}
// import упущение
public class QuestionStudentVO implements Serializable {
@ApiModelProperty(value = "Идентификатор первичного ключа вопросов и ответов")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty(value = «идентификатор внешнего ключа студента»)
@TableField("student_id")
private Integer studentId;
private String name;
@ApiModelProperty(value = "вопроссодержание") private String content;
@ApiModelProperty(value = «Время, когда вопрос был выпущен, когда он был выпущен За кулисами генерируется автоматически")
private Date date;
@ApiModelProperty(value = «Очки за вопросы»)
private Integer value;
// getter、setter упущение
http://localhost/common/getAllQuestionByPage/1/2
{
"code": 200,
"data": {
"total": 10,
"size": 2,
"current": 1,
"records": [
{
"id": 1,
"studentId": 3,
"content": «Во времена династии Тан, в городе Ючжоу, жил веселый и оптимистичный юноша по имени Цзинтянь».
"date": 1534497561000,
"value": 5
},
{
"id": 2,
"studentId": 1,
"content": «Родители Сюэ Цзяня умерли, когда он был маленьким, и его воспитывал дедушка Тан Кунь».
"date": 1533201716000,
"value": 20
}
],
"pages": 5
}
}
http://localhost/common/getAllQuestionWithStudentByPage/1/2
{
"code": 200,
"data": {
"total": 10,
"size": 2,
"current": 1,
"records": [
{
"id": 1,
"studentId": 3,
"name": "vv",
"content": «Во времена династии Тан, в городе Ючжоу, жил веселый и оптимистичный юноша по имени Цзинтянь».
"date": 1534497561000,
"value": 5
},
{
"id": 2,
"studentId": 1,
"name": "cun",
"content": «Родители Сюэ Цзяня умерли, когда он был маленьким, и его воспитывал дедушка Тан Кунь».
"date": 1533201716000,
"value": 20
}
],
"pages": 5
}
}
Причина написания этой статьи:
Версия конфигурации MyBatis | Аннотированная версия MyBatis |
---|---|
① Динамический SQL является гибким, ② SQL в формате XML, хорошая масштабируемость. | ① На одну настройку меньше, на одну точку возникновения ошибок меньше. ② Код понятен и элегантен. |
Конечно, мудрый видит мудрость, а доброжелательный видит доброжелательность.
Издатель: Лидер стека программистов полного стека, укажите источник для перепечатки: https://javaforall.cn/138328.html Исходная ссылка: https://javaforall.cn