Для упрощения разработки и повышения производительности
Hibernate-Plus — это набор инструментов для расширения, который не меняет, а только улучшает операции CRUD в постоянном слое.
Технические обсуждения в QQ группе 492238239. Если группа заполнена, добавьте группу 121472998 (есть деньги — поддержите деньгами, нет денег — поддержите личным участием).
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>hibernate-plus</artifactId>
<version>1.0.0.Final</version>
</dependency>
Преимущества?
Hibernate-Plus значительно облегчает жизнь разработчикам. Можно свободно выбирать общие методы в соответствии со своими потребностями.
Это позволяет вам чувствовать себя так же комфортно при использовании Hibernate, как и при использовании Mybatis-Plus, значительно упрощая разработку.
<!-- Автоматическое сканирование аннотированных классов Hibernate -->
<property name="packagesToScan">
<list>
<value>com.baomidou.hibernate.model.po</value>
</list>
</property>
Смотрите Spring-Boot.
###Слой DAO
/*Интерфейс класса DAO*/
public interface DemoDao расширяет IDao<Tdemo> {
}
/*Класс реализации интерфейса DAO*/
public class DemoDaoImpl расширяет DaoImpl<Tdemo> реализует DemoDao {
}
###Сервисный слой
/*Сервисный интерфейс класса*/
public interface DemoService расширяет IService<Vdemo> {
}
/*Сервис класс реализации интерфейса*/
public class DemoServiceImpl расширяет ServiceImpl<Tdemo, Vdemo> реализует DemoService {
}
###Аннотация сущности @Entity @Table(name = "demo") @DynamicInsert(true) @DynamicUpdate(true) public class Tdemo расширяет AutoPrimaryKey {
private String demo1;
private String demo2;
private String demo3;
@Column(name = "demo1")
public String getDemo1() {
return demo1;
}
public void setDemo1(String demo1) {
this.demo1 = demo1;
}
@Column(name = "demo2")
public String getDemo2() {
return demo2;
}
public void setDemo2(String demo2) {
this.demo2 = demo2;
}
@Column(name = "demo3")
public String getDemo3() {
return demo3;
}
public void setDemo3(String demo3) {
this.demo3 = demo3;
}
}
####Поддержка аннотаций
Полная поддержка
JPA
аннотаций, нативныйHibernate
способ использования.
####Подчеркнуть
Не нужно добавлять аннотацию
@Transient
для свойств, которые не являются атрибутами поля таблицы.
####Пример проекта
##Hibernate-Plus — простой пример использования
Все операции относятся к одной таблице, каждый класс сущности должен наследовать Convert для преобразования между PO и TO.
Пример кода:
List<Vdemo> lists = new ArrayList<Vdemo>(); **Текст запроса:**
for (int i = 0; i <= 100; i++) { Vdemo vdemo = new Vdemo(); vdemo.setDemo1(i + ""); vdemo.setDemo2(i + ""); vdemo.setDemo3(i + ""); lists.add(vdemo); } // 批量插入 boolean insertBatch = demoService.insertBatch(lists); System.out.println(insertBatch); // Condition 链式查询列表 List vdemoList = demoService.selectList(SelectWrapper.instance().le("id", 10)); System.out.println(vdemoList); Map map = new HashMap<>(); map.put("id", 99L); // 根据Condition 查询单条记录 Vdemo vdemo = demoService.selectOne(SelectWrapper.instance().eq("id", 10)); System.out.println(vdemo); List<Map<String, Object>> mapList = demoService.selectMaps(SelectWrapper.instance().ge("id", 80)); System.out.println(mapList); // 根据属性查询单条记录 Vdemo vdemo1 = demoService.get("1"); if (vdemo1 != null) { vdemo1.setDemo1("999"); vdemo1.setDemo2("999"); vdemo1.setDemo3("999"); // 修改或保存 demoService.saveOrUpdate(vdemo1); }
Vdemo vdemo2 = demoService.get("1"); if (vdemo2 != null) { vdemo2.setId(null); demoService.saveOrUpdate(vdemo2); }
int selectCount2 = demoService.selectCount(SelectWrapper.instance().ge("id", 80)); System.out.println(selectCount2); Page page = new Page(1, 20); page.setOrderByField("id"); page.setAsc(false); // 查询分页 Page selectPage = demoService.selectPage(SelectWrapper.DEFAULT, page); System.out.println(selectPage); // Condition链式查询分页返回Map Page selectMapPage = demoService.selectMapPage(SelectWrapper.instance().ge("id", 50), page); System.out.println(selectMapPage); // Condition链式查询分页返回VO Page selectPage2 = demoService.selectPage(SelectWrapper.instance().ge("id", 50), page); System.out.println(selectPage2); // Condition链式 删除单条记录 demoService.delete(DeleteWrapper.instance().eq("id", 1)); List vdemos = demoService.selectList(SelectWrapper.instance()); Iterator iterator = vdemos.iterator(); while (iterator.hasNext()) { Vdemo vdemo3 = iterator.next(); vdemo3.setDemo1(vdemo3.getDemo1() + "Caratacus Plus 1"); vdemo3.setDemo2(vdemo3.getDemo2() + "Caratacus Plus 2"); vdemo3.setDemo3(vdemo3.getDemo3() + "Caratacus Plus 3"); } // 批量修改 demoService.updateBatch(vdemos); // Condition链式 删除所有记录 demoService.delete(DeleteWrapper.DEFAULT);
Перевод текста на русский язык:
Для (int i = 0; i <= 100; i ++) { Vdemo vdemo = новый Vdemo (); vdemo.setDemo1 (i + ""); vdemo.setDemo2 (i + ""); vdemo.setDemo3 (i + ""); lists.add (vdemo); } // Пакетная вставка логическое значение insertBatch = demoService.insertBatch (списки); Система.из.println (insertBatch); // Условный цепочечный запрос списка Список vdemoList = demoService.selectList (SelectWrapper.экземпляр ().le ("id", 10)); Система.из.println (vdemoList); Карта карта = новая HashMap <> (); карта.put ("id", 99L); // Запрос одной записи по условию Vdemo vdemo = demoService.selectOne (SelectWrapper.экземпляр ().eq ("id", 10)); Система.из.println (vdemo); Список <Map <String, объект >> mapList = demoService.selectMaps (SelectWrapper.экземпляр ().ge ("id", 80)); Система.из.println (mapList); // Запрос одной записи по атрибуту Vdemo vdemo1 = demoService.get ("1"); если (vdemo1! = ноль) { vdemo1.setDemo1 ("999"); vdemo1.setDemo2 ("999"); vdemo1.setDemo3 ("999"); // Изменить или сохранить demoService.saveOrUpdate (vdemo1); }
Vdemo vdemo2 = demoService.get ("1"); если (vdemo2! = ноль) { vdemo2.setId (ноль); demoService.saveOrUpdate (vdemo2); }
целое число selectCount2 = demoService.selectCount (SelectWrapper.экземпляр ().ge ("id", 80)); Система.из.println (selectCount2); Страница страница = новая Страница (1, 20); страница.setOrderByField ("id"); страница.setAsc (ложь); // Пейджинговый запрос Страница selectPage = demoService.selectPage (SelectWrapper.ПО УМОЛЧАНИЮ, страница); Система.из.println (selectPage); // Цепочечный запрос страницы с условием возвращает карту Страница selectMapPage = demoService.selectMapPage (SelectWrapper.экземпляр ().ge ("id", 50), страница); Система.из.println (selectMapPage); // Цепочечный запрос страницы с условием возвращает VO Страница selectPage2 = demoService.selectPage (SelectWrapper.экземпляр ().ge ("id", 50), страница); Система.из.println (selectPage2); // Цепочечное условие удаляет одну запись demoService.delete (DeleteWrapper.экземпляр ().eq ("id", 1)); Список vdemos = demoService.selectList (SelectWrapper.экземпляр ()); Итератор итератор = vdemos.итератор (); в то время как (итератор.hasNext ()) { Vdemo vdemo3 = итератор.следующий (); vdemo3.setDemo1 (vdemo3.getDemo1 () + «Caratacus Plus 1»); vdemo3.setDemo2 (vdemo3.getDemo2 () + «Caratacus Plus 2»); vdemo3.setDemo3 (vdemo3.getDemo3 () + «Caratacus Plus 3»); } // Массовое изменение demoService.updateBatch (vdemos); // Цепочное условие удаляет все записи demoService.delete (DeleteWrapper.ПО УМОЛЧАНИЮ);
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.