Слияние кода завершено, страница обновится автоматически
#mybatis-mapper
После наследования Mapper от CrudMapper можно получить функции CRUD без необходимости писать файл mapper.xml.
### Правила загрузки SQL по умолчанию в MyBatis
MyBatis получает SQL двумя способами: через xml и SqlProvider. XML имеет более высокий приоритет, чем SqlProvider, и SQL в XML и SqlProvider не должен иметь одинаковые имена.
### Изменённые правила загрузки SQL после настройки mapper
1. Приоритет SQL: xml > SqlProvider > crudsql.
2. XML, SqlProvider и crudsql могут содержать SQL с одинаковыми именами, при этом действует тот, что имеет более высокий приоритет.
### Согласованные правила
1. Имя таблицы базы данных получается путём преобразования имени класса сущности из стиля «верблюжий» в стиль «змеиный», например, классы User и UserGroups соответствуют таблицам user и user_groups.
2. Имена свойств класса сущности по умолчанию соответствуют именам столбцов таблицы, игнорируя свойства, помеченные как transient.
3. Свойства id класса сущности (типы Long, long, Integer, int) по умолчанию сопоставляются с первичным ключом таблицы базы данных. Если используется другое имя свойства или стратегия первичного ключа, можно использовать аннотацию @PK для обозначения.
4. Если первичный ключ не использует стандартный id или не обозначен с помощью @PK, предполагается, что таблица базы данных не имеет уникального первичного ключа. Операции удаления, изменения и поиска, основанные на первичном ключе, не будут внедрены.
### Тестовый пример
public class UserMapperTest { public static void main(String[] args) { String resource = "mybatis.xml"; InputStream in = UserMapperTest.class.getClassLoader().getResourceAsStream(resource);
// Здесь используется MybatisSessionFactoryBuilder для создания SqlSessionFactory с целью внедрения функций CrudMapper
SqlSessionFactory sessionFactory = new MybatisSessionFactoryBuilder().build(in);
SqlSession session = sessionFactory.openSession();
UserMapper userMapper = session.getMapper(UserMapper.class);
// В этом месте selectByPK переопределён selectByPK из файла UserMapper.xml
User user = userMapper.selectByPK(2);
System.out.println(user);
user.setName("update_" + user.getName());
// updateByPK наследуется от CrudMapper, в файле UserMapper.xml этот SQL не объявлен
userMapper.updateByPK(user);
// Здесь selectByPK снова переопределён файлом UserMapper.xml
user = userMapper.selectByPK(user.getPk());
System.out.println(user);
session.commit();
}
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )