Объявление: EasyMyBatis больше не будет разрабатывать новые функции, только исправлять ошибки. Настоятельно рекомендуется использовать улучшенную версию EasyMyBatis — FastMyBatis.
Адрес: https://gitee.com/durcframework/fastmybatis
API более понятный, функционал богаче, код стабильнее.
EasyMyBatis – это расширенная библиотека MyBatis, цель которой – упростить разработку MyBatis и сделать её более эффективной.
Особенности EasyMyBatis:
Архитектура EasyMyBatis выглядит следующим образом:
Процесс работы EasyMyBatis представлен в виде блок-схемы:
Если у вас возникнут проблемы во время использования, вы можете присоединиться к QQ группе 328419269 для получения помощи.
public class TUserDaoTest extends EasymybatisSpringbootApplicationTests {
@Resource
TUserDao dao;
@Resource
TransactionTemplate transactionTemplate;
// 根据 первичному ключу поиск
@Test
public void testGet() {
TUser user = dao.get(3);
print(user);
}
// Поиск по полю, получение одной записи
@Test
public void testGetByProperty() {
TUser user = dao.getByProperty("username", "王五");
print(user);
}
// По условиям поиск одной записи
@Test
public void testGetByExpression() {
// Запрос ID=3 пользователя
Query query = Query.build().eq("id", 3);
TUser user = dao.getByExpression(query);
print(user);
}
// Условный запрос
// Запрос пользователя с именем '张三'
@Test
public void testFind() {
Query query = new Query();
// Добавление условий запроса
query.eq("username", "张三");
List<TUser> list = dao.find(query); // Получение результатов
long count = dao.countTotal(query); // Подсчёт общего количества
print("count:" + count);
for (TUser user : list) {
System.out.println(user);
}
}
// Страничный запрос
/*MYSQL оператор:
*
* SELECT t.`id` , t.`username` , t.`state` , t.`isdel` , t.`remark` , t.`add_time` , t.`money` , t.`left_money`
* FROM `t_user` t
* ORDER BY id DESC
* LIMIT ?,?
*
* Параметры: 2(Integer), 2(Integer)
*/
@Test
public void testPage() {
Query query = new Query();
query.setPage(2, 2) // Установка pageIndex, pageSize
.addSort("id", Sort.DESC); // Добавление сортировки
// Результаты после запроса, включая общее количество записей, результаты и общее количество страниц и т.д.
PageInfo<TUser> pageInfo = QueryUtils.query(dao, query);
List<TUser> rows = pageInfo.getList();
for (TUser user : rows) {
System.out.println(user);
}
}
// Пользовательский возврат полей, возврат только двух полей
// SELECT t.id,t.username FROM `t_user` t LIMIT 0,10
@Test
public void testSelfColumns() {
Query query = new Query();
// Возврат только id, username
query.setColumns(Arrays.asList("t.id","t.username"));
List<TUser> list = dao.find(query);
for (TUser user : list) {
System.out.println(user);
}
}
// Многотабличный запрос, левое соединение
// Подходит для сценария: получение информации о полях из двух таблиц и возврат её на передний план
/*
* MYSQL генерирует следующий оператор SQL:
SELECT
t.`id` , t.`username` , t.`state` , t.`isdel` , t.`remark` , t.`add_time` , t.`money` , t.`left_money`
, t2.city , t2.address
FROM `t_user` t left join user_info t2 on t.id = t2.user_id
WHERE t2.id = ?
ORDER BY id ASC
LIMIT ?,?
*/
@Test
public void testJoin() {
Query query = new Query();
// Добавляем поля второй таблицы, вместе с полями основной таблицы
query.addOtherColumns(
"t2.city"
,"t2.address"
);
// Левое соединение, основная таблица по умолчанию имеет псевдоним t
query.join("left join");
}
}
``` Данный фрагмент написан на языке Java.
user_info t2 on t.id = t2.user_id"); //Добавление условия query.eq("t2.id", 2);
query.addSort("t.id");
List list = dao.find(query);
System.out.println("=============="); for (TUser user : list) { System.out.println( user.getId() + " " + user.getUsername() // Ниже два поля из второй таблицы + " " + user.getCity() + " " + user.getAddress() ); } System.out.println("=============="); }
// Добавление-сохранение всех полей @Test public void testInsert() { TUser user = new TUser(); user.setAddTime(new Date()); user.setIsdel(false); user.setLeftMoney(22.1F); user.setMoney(new BigDecimal(100.5)); user.setRemark("备注"); user.setState((byte)0); user.setUsername("张三");
dao.save(user);
print("Добавленный первичный ключ:" + user.getId());
print(user);
}
// Добавление-сохранение непустых полей @Test public void testInsertIgnoreNull() { TUser user = new TUser(); user.setAddTime(new Date()); user.setIsdel(true); user.setMoney(new BigDecimal(100.5)); user.setState((byte)0); user.setUsername("张三notnull"); user.setLeftMoney(null); user.setRemark(null);
dao.saveIgnoreNull(user);
print("Добавлен первичный ключ:" + user.getId());
print(user);
}
// Пакетное добавление /*
Поддержка mysql,sqlserver2008. Для поддержки других баз данных используйте метод saveMulti
INSERT INTO person (id, name, age) VALUES (1, 'Kelvin', 22), (2, 'ini_always', 23); */ @Test public void testInsertBatch() { List users = new ArrayList<>();
for (int i = 0; i < 3; i++) { // Создание трех объектов TUser user = new TUser(); user.setUsername("username" + i); user.setMoney(new BigDecimal(i)); user.setRemark("remark" + i); user.setState((byte)0); user.setIsdel(false); user.setAddTime(new Date()); user.setLeftMoney(200F); users.add(user); }
int i = dao.saveBatch(users); // Возвращает количество успешных операций
System.out.println("saveBatch --> " + i); }
// Обновление всех полей @Test public void testUpdate() { TUser user = dao.get(3); user.setUsername("李四"); user.setMoney(user.getMoney().add(new BigDecimal(0.1))); user.setIsdel(true);
int i = dao.update(user);
print("testUpdate --> " + i);
}
// Обновление непустых полей
/*
*UPDATE [t_user] SET [username]=?, [isdel]=? WHERE [id] = ?
*/
@Test
public void updateIgnoreNull() {
TUser user = new TUser();
user.setId(3);
user.setUsername("王五");
user.setIsdel(false);
int i = dao.updateIgnoreNull(user);
print("updateNotNull --> " + i);
}
// По условию обновление // UPDATE t_user SET remark = '批量修改备注' WHERE state = 0 @Test public void testUpdateNotNullByExpression() { Query query = new Query(); query.eq("state", 0);
TUser user = new TUser();
user.setRemark("批量修改备注");
int i = dao.updateIgnoreNullByExpression(user, query);
print("testUpdateNotNullByExpression --> " + i);
}
// Удаление @Test public void testDel() { TUser user = new TUser(); user.setId(14); int i = dao.del(user); print("del --> " + i); }
// По выражению удаление
// DELETE FROM t_user
WHERE state = ?
@Test
public void delByExpression() {
Query query = new Query();
query.eq("state", 3);
int i = dao.delByExpression(query);
print("delByExpression --> " + i);
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )