Это 19-й день моего участия в ноябрьском испытании обновлений. Узнайте подробности события:Вызов последнего обновления 2021 г.
написать впереди
Все мы знаем, что, будь то собственный проект SSM или текущая версия SpringBoot, для работы уровня сохраняемости базы данных будет использоваться Mybatis, который является хорошо известной структурой операций с базами данных. В последние несколько лет некоторые люди могут использовать спящий режим, Более того, спящий режим позже носил пальто под названием JPA, но суть все еще спящего режима, но общая доля рынка Mybatis непоколебима.
Все мы знаем, что мы будем генерировать набор файлов xml для работы с соответствующими таблицами. Новый коллега спросил меня, почему нет в этом проекте и как работать с базой данных. Я смеялся,
маппер без xml файла
Можете ли вы по-прежнему работать с базой данных без файла xml? Ответ конечно да, давайте посмотрим вместе, сначала посмотрим на код
UserMapper.java
/**
* 根据id查询用户信息
* @param userId
* @return
*/
@Select("select id,user_name as userName,age from t_user where id =#{userId}")
User selectUserByUserId(@Param("userId") Integer userId);
Приведенный выше код основан на функции пользовательской информации в соответствии с идентификатором пользователя. Во-первых, это файл Java, а не файл XML, и это
- @Выбрать аннотацию
Эта аннотация также является официальной аннотацией Mybatis, цель которой состоит в том, чтобы быстро обеспечить простую и быструю работу sql для базы данных. Просто добавьте @Select() к методу в картографе, а затем напишите оператор sql, который будет реализован в круглых скобках.
Кто-то спросил, это запрос. Если это вставить и добавить, да вставить аннотацию
- @Insert
@Insert("insert into t_user (user_name, age) values(#{userName},#{age})")
int insertUser(User user);
Это операция добавления библиотеки, а установка в нее объекта — та же операция, что и при наличии xml-файла. значение должно быть сущностью в сущности пользователя
Увидев это, мой коллега спросил, может ли эта операция вставки вернуть самоувеличивающийся идентификатор? Когда есть xml:
<!--主要是在主键是自增的情况下使用,添加成功后可以直接使用主键值,其中keyProperty的值是对象的属性值,而不是数据库表中的字段名-->
<insert id="insertSelective" parameterType="com.xxx.dataobject.UserDo" keyProperty="id" useGeneratedKeys="true">
............
</insert>
Выше нам нужно только добавить keyProperty="id" useGeneratedKeys="true" для возврата автоматически увеличивающегося идентификатора, так как же вернуть эту форму аннотации?
@Insert("insert into t_user (user_name, age) values(#{userName},#{age})")
@Options(useGeneratedKeys = true)
int insertUser(User user);
- @Options(useGeneratedKeys = true)
Добавьте эту аннотацию, чтобы вернуть идентификатор автоинкремента.
Умные коллеги видят здесь, что удаление и модификация @delete @Update. Ха-ха, я не буду вдаваться в подробности здесь. Вы можете проверить это на Baidu. так же, как выберите Вставить
будь осторожен
Здесь сказано, что особое внимание следует уделить запросу. не могу написать выбрать *
@Select("select * from t_user where id =#{userId}")
User selectUserByUserId(@Param("userId") Integer userId);
Вы должны сами сопоставить свойства. Когда xml, он также сопоставляется в соответствии с полями и атрибутами сущности. Здесь, если вы просто напишете *, кадр точно не будет автоматически соответствовать атрибуту. так надо как
Коллега спросил как проверить список, так же пишется, давайте посмотрим
@Select("select id,user_name,age from t_user where id =#{userId}")
@Results(value = {
@Result(property = "id", column = "id", javaType = INTEGER.class, jdbcType = JdbcType.INTEGER),
@Result(property = "userName", column = "user_name", javaType = String.class, jdbcType = JdbcType.VARCHAR),
@Result(property = "age", column = "age", javaType = INTEGER.class, jdbcType = JdbcType.INTEGER)})
List<User> findUserList(@Param("userId") Integer userId)
При этом AS не будет указывать имя атрибута. Уточняйте по аннотации.
В ПОРЯДКЕ. Сегодня о аннотациях CRUD MyBatis, чтобы представить его здесь. . . Наше следующее прощание
значение
Спасибо за чтение, если вы чувствуете, что узнали что-то, вы можете поставить лайк и подписаться. Также добро пожаловать на любые вопросы, давайте прокомментируем ниже
давай! Увидимся в следующий раз!
Позвольте мне поделиться с вами несколькими непристойными операциями, которые я описал ранее.
скопировать объект, эта операция немного сложна!
Сухой товар! SpringBoot использует события мониторинга для реализации асинхронных операций.