Что такое
GyJdbc — это фреймворк, основанный на jdbctemplate и похожий на JPA, который обеспечивает уровень персистентности. Он имеет следующие преимущества:
Шаг 1. Добавьте координаты Maven:
<dependency>
<groupId>io.github.springstudent</groupId>
<artifactId>GyJcdc</artifactId>
<version>1.4.1.RELEASE</version>
</dependency>
Шаг 2. Определите класс Pojo, соответствующий таблице базы данных:
Используйте аннотацию @Table
, чтобы определить отношение класса Pojo к таблице базы данных. Используйте атрибут pk
для определения первичного ключа таблицы.
@Table(name = "tb_user", pk = "id")
public class TbUser {
private String id;
private String name;
...
}
Шаг 3. Определите интерфейсы Dao и DaoImpl, которые наследуются от EntityDao и EntityDaoImpl соответственно:
public interface TbUserDao extends EntityDao<TbUser, String> {
}
@Repository
public class TbUserDaoImpl extends EntityDaoImpl<TbUser, String> implements TbUserDao {
}
Шаг 4. Внедрите Dao в сервисный слой и используйте методы EntityDao для выполнения операций добавления, удаления, изменения и запроса:
void save(T t)throws Exception;
void batchSave(List<T> list)throws Exception;
int insertWithSql(SQL sql)throws Exception;
void delete(Id id)throws Exception;
void deleteWithCriteria(Criteria criteria)throws Exception;
void batchDelete(List<Id> ids)throws Exception;
int deleteWithSql(SQL sql)throws Exception;
void truncate()throws Exception;
void drop()throws Exception;
void drunk(SQL sql)throws Exception;
void update(T t)throws Exception;
void batchUpdate(List<T> list)throws Exception;
int updateWithSql(SQL sql)throws Exception;
T queryOne(Id id)throws Exception;
List<T> queryAll()throws Exception;
PageResult<T> pageQuery(Page page)throws Exception;
...
Пример использования Criteria:
//where name = 'zhouning'
new Criteria().where(TbUser::getName,"zhouning").andIfAbsent(TbUser::getName,null);
//where name in ('zhouning','yinhw')
new Criteria().in(TbUser::getName,Arrays.asList("zhouning","yinhw"));
//where age < 28 order by age desc
new Criteria().lt(TbUser::getAge,28).orderBy(new Sort(TbUser::getAge);
//where age < 20 and (name like '%zhou%' or realName like 'zhouning')
new Criteria().lt(TbUser::getAge,20).andCriteria(new Criteria().like(TbUser::getName,"zhou").orLike(TbUser::getRealName,"周"));
Пример использования SQL:
new SQL().select(TbUser::getName,TbUser::getEmail,TbUser::getRealName,TbUser::getMobile).from(TbUser.class).where(TbUser::getIsActive,1);
new SQL().select("age",countAs("age").as("num")).from(TbUser.class).orderBy(new Sort(TbUser::getAge)).groupBy(TbUser::getAge);
new SQL().update(TbAccount.class).set(TbUser::getRealName,"元林").set(TbUser::getEmail,"13888888888@163.com").where(TbUser::getName,"Smith");
new SQL().insertInto(TbAccount.class,"userName","realName").values("test","测试").values("test2","测试2");
new SQL().delete().from(TbUser.class).gt(TbUser::getAge,20);
``` **Реализует SQLInterceptor:**
@Override
public void beforeBuild(SQLType sqlType, SqlModifier sqlModifier) throws Exception {
// Грубая гранулярность: через тип SQL добавляем поля, которые нужно обновить и вставить.
if (sqlType.equals(SQLType.Update)) {
if (sqlModifier.tableName().startsWith("sys_tb_")) {
sqlModifier.addUpdate("updateTime", new Date());
sqlModifier.addUpdate("updateUser", "admin");
}
} else if (sqlType.equals(SQLType.Insert)) {
if (sqlModifier.tableName().startsWith("sys_tb_")) {
sqlModifier.addInsert("createTime", new Date());
sqlModifier.addInsert("createUser", "admin");
sqlModifier.addInsert("updateTime", new Date());
sqlModifier.addInsert("updateUser", "admin");
}
}
// Тонкая гранулярность: согласно sqlId добавляем соответствующие поля обновления и условия запроса.
if (sqlModifier.sqlId().equals("updateBirthAuto")) {
sqlModifier.addUpdate("isActive", 0);
} else if (sqlModifier.sqlId().equals("isDelete1")) {
sqlModifier.addAnd(Where.where("isActive").equal(1));
}
}
@Override
public void afterBuild(String sql, Object[] args) throws Exception {
// sql аудит.
System.out.println("sql:" + sql + " args:" + ArrayUtils.toString(args));
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )