1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/uncode-uncode-dal-all

Клонировать/Скачать
README.md 38 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 13.03.2025 08:23 e434cf2

uncodedal

В соответствии с принципом «не изобретай велосипед», универсальный слой доступа к данным реализован на основе ORM-фреймворков, таких как MyBatis, Spring JDBC, Hibernate и MongoDB. Этот слой поддерживает разделение чтения и записи на основе источников данных, автоматическое переключение между основным и резервным серверами, а также перенаправление при возникновении ошибок. Поддерживается простое балансирование нагрузки.

Основные возможности* Реализация общего слоя DAL на основе различных ORM-фреймворков, обеспечивающая полную совместимость со всеми существующими проектами. Можно свободно переключаться между различными ORM-фреймворками без необходимости изменения кода.

  • Реализация кэширования DAL-слоя, позволяющая самостоятельно устанавливать время истечения срока действия.
  • Реализация разделения чтения и записи, автоматического переключения между основным и резервным серверами, перенаправления при возникновении ошибок, проверки восстановления и балансировки нагрузки на основе нескольких источников данных.
  • При использовании этого компонента следует следовать указанным ниже правилам:
    • При работе с DTO поля должны иметь одноимённые названия с полями таблиц базы данных; можно использовать DTO или отказаться от его использования.
    • Поддержка объединения таблиц недоступна, основной акцент делается на операции с одной таблицей. Для выполнения запросов к нескольким таблицам рекомендуется использовать native ORM-фреймворки.
    • По умолчанию ключевые поля в SQL имеют имя id, а в NoSQL — _id.
  • Поддержка генерации DTO и сервисных классов.## Примеры использования

С появлением новых решений, таких как NoSQL, отношение к использованию реляционных баз данных изменилось. Большинство компаний больше не используют реляционные базы данных для работы с большими объемами данных, такими как отчетность. Однако для 90% бизнес-данных требуется только работа с одной таблицей, без необходимости объединения таблиц. Цель данного компонента заключается в том, чтобы автоматизировать эти задачи, что позволяет избежать повторной работы и увеличивает скорость разработки. После внедрения этого компонента нет необходимости использовать MyBatis для генерации SQL, Spring JDBC для написания SQL-запросов или аннотации Hibernate. Компонент берет на себя все эти задачи. Тем не менее, он основан на ORM-фреймворках и выполняет все операции с одной таблицой, поэтому он не заменяет работу ORM. Это решение может быть применено как к новым, так и к старым проектам без влияния на текущие бизнес-процессы. Он просто упрощает работу, позволяя избавиться от множества DAO-классов и сосредоточиться на необходимых сервисах. Компонент следует определенным правилам COC, поэтому существуют некоторые ограничения на использование, которые следует учитывать.

Диаграмма действий

## Maven Для скачивания последней версии перейдите на страницу релизов: http://git.oschina.net/uncode/uncode-dal-all/releases

1. MyBatis

<dependency>
    <groupId>cn.uncode</groupId>
    <artifactId>uncode-dal</artifactId>
    <version>1.0.3</version>
</dependency>
<dependence>
    <groupId>cn.uncode</groupId>
    <artifactId>uncode-dal-mybatis</artifactId>
    <version>1.0.3</version>
</dependence>

2. Spring JDBC

<dependence>
    <groupId>cn.uncode</groupId>
    <artifactId>uncode-dal</artifactId>
    <version>1.0.3</version>
</dependence>

<dependence>
    <groupId>cn.uncode</groupId>
    <artifactId>uncode-dal-spring-jdbc</artifactId>
    <version>1.0.3</version>
</dependence>

3. MongoDB

<dependence>
    <groupId>cn.uncode</groupId>
    <artifactId>uncode-dal</artifactId>
    <version>1.0.3</version>
</dependence>

<dependence>
    <groupId>cn.uncode</groupId>
    <artifactId>uncode-dal-mongo</artifactId>
    <version>1.0.3</version>
</dependence>

Автоматически сгенерированный инструмент

Введите описание изображения здесь

Введите описание изображения здесь

Интеграция с Spring

Динамический источник данных может автоматически обрабатывать отказоустойчивое восстановление и обнаружение ошибок. При разделении чтения и записи несколько источников данных используются случайным образом. Кэш можно настроить самостоятельно; он может быть глобально включен или отключен, что удобно для использования в среде разработки. ### 1 Настройка DataSource Можно использовать любой компонент пула соединений базы данных, рекомендуется использовать Druid. Конфигурирование Fastser-DAL динамического источника данных позволяет автоматически реализовать разделение чтения и записи, автоматическое переключение между основной и резервной системами и отказоустойчивое восстановление. Рекомендовано использование. После использования Fastser-DAL динамического источника данных все ref="dataSource" в конфигурации Spring JDBC/MyBatis следует заменить на ref="dynamicDataSource".

	<!-- Необходимо, но не обязательно, конфигурация динамического источника данных -->
	<bean id="dynamicDataSource" class="cn.uncode.dal.datasource.DynamicDataSource">
     	<!-- Конфигурация источника данных для чтения, используется для операций чтения, текущий механизм балансировки нагрузки — случайное получение одного источника -->
		<property name="slaveDataSources">
			<map key-type="java.lang.String">
				<entry key="readDataSourceOne" value-ref="dataSource3"/>
				<entry key="readDataSourceTwo" value-ref="dataSource4"/>
			</map>
		</property>
         <!-- Конфигурация основного источника данных -->
		<property name="masterDataSource" ref="dataSource1" />
         <!-- Конфигурация резервного источника данных -->
		<property name="standbyDataSource" ref="dataSource2" />
	</bean>
	<!-- Необходимо при использовании динамического источника данных для разделения чтения и записи -->

2 Конфигурация реализации Spring JDBC

<!-- Опционально, конфигурация глобального использования кэша, значение по умолчанию true -->
<property name="useCache" value="false" />

<!-- Опционально, оптимистическая блокировка, если указано это свойство и существует поле с названием ver, то таблица может использовать механизм оптимистической блокировки -->
<property name="version" value="ver" />

3 Конфигурация реализации MyBatis

``` ```markdown ### 4 Конфигурация реализации MongoDB

Опциональная конфигурация кэша с использованием встроенной реализации кэша

<bean id="dalCache" class="cn.uncode.dal.cache.impl.ConcurrentMapCache"/>

Конфигурация кэша

<bean id="cacheManager" class="cn.uncode.dal.cache.support.SimpleCacheManager">
    <property name="cache" ref="dalCache"/>
</bean>

Конфигурация MongoDB

<bean id="mongoDataBase" class="cn.uncode.dal.mongo.MongoDataBase">
    <property name="host" value="172.16.30.98"/>
    <property name="port" value="27017"/>
    <property name="db" value="test"/>
    <property name="username" value="xiaocong"/>
    <property name="password" value="xiaocong"/>
</bean>

Конфигурация DAL MongoDB

<bean id="mongoDAL" class="cn.uncode.dal.mongo.MongoDAL">
    <property name="database" ref="mongoDataBase"/>
    <!-- Опциональная конфигурация глобального использования кэша, значение по умолчанию true -->
    <property name="useCache" value="false"/>
</bean>

Интеграция с нативными фреймворками

Этот компонент обрабатывает все операции с одной таблицей. Для сложных операций, таких как связывание нескольких таблиц, рекомендуется использовать нативные фреймворки, чтобы обеспечить выполнение всех требуемых функций при повышении производительности разработки и снижении затрат.

```java
JdbcTemplate jdbcTemplate = (JdbcTemplate) baseDAL.getTemplate();
```### 2 MyBatis
```xml
<!-- Измените конфигурацию SqlSessionFactory следующим образом -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="configLocation" value="classpath:mybatis.xml"/>
    <property name="mapperLocations" value="classpath:/cn/uncode/mapper/*Mapper.xml"/>
</bean>
<!-- Настройте сканирование Dao -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="cn.uncode.mapper"/>
</bean>

3 MongoDB

MongoDB mongoDB = (MongoDB) baseDAL.getTemplate();

API

1 Поиск по списку

fields — поля для отображения, queryCriteria — условия запроса, seconds — время кэширования.

QueryResult selectByCriteria(List<String> fields, QueryCriteria queryCriteria);
QueryResult selectByCriteria(String[] fields, QueryCriteria queryCriteria);
QueryResult selectByCriteria(List<String> fields, QueryCriteria queryCriteria, int seconds);
QueryResult selectByCriteria(String[] fields, QueryCriteria queryCriteria, int seconds);
QueryResult selectByCriteria(QueryCriteria queryCriteria);
QueryResult selectByCriteria(QueryCriteria queryCriteria, int seconds);
QueryResult selectPageByCriteria(List<String> fields, QueryCriteria queryCriteria);
QueryResult selectPageByCriteria(String[] fields, QueryCriteria queryCriteria);
QueryResult selectPageByCriteria(List<String> fields, QueryCriteria queryCriteria, int seconds);
QueryResult selectPageByCriteria(String[] fields, QueryCriteria queryCriteria, int seconds);
QueryResult selectPageByCriteria(QueryCriteria queryCriteria);
QueryResult selectPageByCriteria(QueryCriteria queryCriteria, int seconds);

2 Статистический поиск

queryCriteria — условия запроса, seconds — время кэширования.

int countByCriteria(QueryCriteria queryCriteria);
int countByCriteria(QueryCriteria queryCriteria, int seconds);
```### 3 Поиск по первичному ключу
`obj`  объект с первичным ключом, `fields`  поля для отображения, `queryCriteria`  условия запроса, `seconds`  время кэширования, `clazz`  тип экземпляра объекта, `id`  первичный ключ объекта.```java
QueryResult selectByPrimaryKey(Object obj);
QueryResult selectByPrimaryKey(Object obj, int seconds);

4 Вставка

Объект с первичным ключом

Object insert(Object obj);
Object insert(String table, Map<String, Object> obj);
Object insert(String database, String table, Map<String, Object> obj);

void asynInsert(Object obj);
void asynInsert(String table, Map<String, Object> obj);
void asynInsert(String database, String table, Map<String, Object> obj);

5 Обновление

Объект с первичным ключом, query_criteria — условие запроса

int updateByCriteria(Object obj, QueryCriteria query_criteria);
int updateByPrimaryKey(Object obj);
int updateByPrimaryKey(String table, Map<String, Object> obj);
int updateByPrimaryKey(String database, String table, Map<String, Object> obj);

6 Удаление

Объект с первичным ключом, query_criteria — условие запроса, clazz — тип объекта, id — первичный ключ объекта

int deleteByPrimaryKey(Object obj);
int deleteByPrimaryKey(String table, Map<String, Object> obj);
int deleteByPrimaryKey(Class<?> clazz, Object id);
int deleteByPrimaryKey(String table, Object id);
int deleteByPrimaryKey(String database, String table, Object id);
int deleteByCriteria(QueryCriteria query_criteria);

7 Другие операции

database — имя базы данных, table_name — имя таблицы

void reloadTable(String table_name);
void clearCache(String table_name);
void reloadTable(String database, String table_name);
void clearCache(String database, String table_name);

8 Методы QueryCriteria //Сортировка, например: id desc, name

    setOrderByClause(String orderByClause)
    //Удаление повторений
    setDistinct(boolean distinct)
    //Запрос одной записи
    setSelectOne(boolean selectOne)
    //Размер страницы, первая страница - 1
    setPageSize(int pageSize)
    //Установка имени таблицы
    setTable(String table)
    //Установка имени базы данных, обычно это не требуется
    setDatabase(String database)
    //Установка версии при использовании оптимистичной блокировки, используется только для операций обновления
    setVersion(Object version)
    //Установка имени таблицы на основе типа DTO объекта, в этом случае имя класса DTO должно совпадать с именем таблицы
    setTable(Class<?> clazz)### 9 Методы Criteria

Criteria append(Condition condition, String field, Object value)
Criteria append(String field, Object value)
Criteria append(String sql)
andColumnIsNull(String column)
andColumnIsNotNull(String column)
andColumnEqualTo(String column, Object value)
andColumnNotEqualTo(String column, Object value)
andColumnGreaterThan(String column, Object value)
andColumnGreaterThanOrEqualTo(String column, Object value)
andColumnLessThan(String column, Object value)
andColumnLessThanOrEqualTo(String column, Object value)
andColumnIn(String column, List<Object> values)
andColumnNotIn(String column, List<Object> values)
andColumnLike(String column, Object value)
andColumnNotLike(String column, Object value)
andColumnBetween(String column, Object value1, Object value2)
andColumnNotBetween(String column, Object value1, Object value2)

10 Методы QueryResult // Получение одной строки данных в виде map

 Map<String, Object> get()
 // Получение одной строки данных в виде map, замена полей на псевдонимы
 Map<String, Object> getWithAliasName(Map<String, String> aliasName)
 // Получение одной строки данных в виде map, скрытие ненужных полей
 Map<String, Object> get(List<String> hiddenFields)
 // Получение одной строки данных в виде map, скрытие ненужных полей и замена полей на псевдонимы
 Map<String, Object> getWithAliasName(List<String> hiddenFields, Map<String, String> aliasName)
 // Получение нескольких строк данных в виде списка
 List<Map<String, Object>> getList()
 // Получение списка записей с возможностью скрытия ненужных полей
 List<Map<String, Object>> getList(List<String> скрытые_поля)
 // Получение списка записей с заменой полей на псевдонимы
 List<Map<String, Object>> getList(Map<String, String> псевдонимы)
 // Получение списка записей с скрытием ненужных полей и заменой полей на псевдонимы
 List<Map<String, Object>> getList(List<String> скрытые_поля, Map<String, String> псевдонимы)
 // Преобразование одной записи в объект
 <T> T какОбъект(Class<T> типКласса)
 // Преобразование нескольких записей в объекты
 <T> List<T> какСписокОбъектов(Class<T> типКласса)
 // Получение информации о пагинации
 Map<String, Object> получитьСтраницу()

Пример использования

1 Структура таблицы user

CREATE TABLE `user` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `name` VARCHAR(20) DEFAULT NULL COMMENT 'Имя пользователя',
    `pwd` VARCHAR(50) DEFAULT NULL -- Пароль
);
       `email` varchar(30) DEFAULT NULL 'Электронная почта',
        `status` int(11) DEFAULT '0' COMMENT '1 - активен, 0 - заблокирован',
        `age` int(11) DEFAULT NULL 'Возраст',
        PRIMARY KEY (`id`),
        UNIQUE KEY `unique_user_userName` (`userName`)
        ) ENGINE=MyISAM AUTO_INCREMENT=167 DEFAULT CHARSET=utf8;
   ### 2 Класс User
       import java.io.Serializable;
       @Table(name="tb_user")
       public class User implements Serializable {
           private static final long serialVersionUID = 4799201163494761002L;
           public static final String ID = "id";
           public static final String NAME = "name";
           public static final String PWD = "pwd";
           public static final String EMAIL = "email";
           public static final String STATUS = "status";
           public static final String AGE = "age";
           private int id;
           @Field(name="fd_name")
           private String name;
           private String pwd;
           private String email;
           private int status;
           private int age;

           public int getId() {
               return id;
           }

           public void setId(int id) {
               this.id = id;
           }

           public String getName() {
               return name;
           }

           public void setName(String name) {
               this.name = name;
           }

           public String getPwd() {
               return pwd;
           }

           public void setPwd(String pwd) {
               this.pwd = pwd;
           }

           public String getEmail() {
               return email;
           }

           public void setEmail(String email) {
               this.email = email;
           }

           public int getStatus() {
               return status;
           }

           public void setStatus(int status) {
               this.status = status;
           }

           public int getAge() {
               return age;
           }

           public void setAge(int age) {
               this.age = age;
           }
       }
   ### 3 Внедрение BaseDal
   * Аннотация
       import cn.uncode.dal.core.BaseDAL;
       @Service
       public class UserService implements IUserService {
           @Autowired
           private BaseDAL baseDAL;
           ...
       }
   * XML
       <bean id="userService" class="cn.uncode.web.service.UserService">
  <property name="baseDAL" ref="baseDAL"></property>

4 Пример без DTO

  • Поиск в списке * Пример 1 // Создание объекта запроса QueryCriteria queryCriteria = new QueryCriteria(); // При отсутствии DTO можно прямым образом указывать имя таблицы // queryCriteria.setTable("user"); // Создание объекта условий Criteria criteria = queryCriteria.createCriteria(); // Установка условий criteria.append(Condition.GREATER_THAN, "age", 18).append("status", 1); //criteria.andColumnGreaterThan("age", 18); //criteria.andColumnEqualTo("status", 1); // Получение всех полей с кэшированием QueryResult result = baseDAL.selectByCriteria(queryCriteria); // Получение части полей с кэшированием на 60 секунд QueryResult result = baseDAL.selectByCriteria(new String[]{"name", "pwd"}, queryCriteria, 60); List<Map<String, Object>> users = result.getList(); // Также можно преобразовать в список DTO List users = result.asList(User.class); * Пример 2 // Создание объекта запроса QueryCriteria queryCriteria = new QueryCriteria(); // Указание имени таблицы queryCriteria.setTable("user"); // Установка пагинации queryCriteria.setPageIndex(1); queryCriteria.setPageSize(20); // Установка сортировки queryCriteria.setOrderByClause("age desc"); // Выполнение пагинированного запроса с кэшированием на 60 секунд QueryResult result = baseDAL.searchByKeyFields(queryCriteria, 60); // Также можно передать DTO объект User dto = result.as(User.class);
  • Поиск по ключевым полям
  • Пример 1
    Map<String, Object> user = new HashMap<String, Object>();
    user.put("id", 1);
    // Кэширование на 20 секунд
    QueryResult result = baseDAL.selectByPrimaryKey(user, 20);
    user = result.get();
    // Также можно передать DTO объект
    User dto = result.as(User.class);
    ```    ```
  • Пример 2
    // Отображение части полей, без использования кэша
    QueryResult result = baseDAL.selectByPrimaryKey(new String[]{"name", "pwd"}, "user", 1, BaseDal.NO_CACHE);
    Map<String, Object> user = result.get();
  • Пример 3
    // Без использования DTO объекта, прямое указание имени таблицы
    QueryResult result = baseDAL.selectByPrimaryKey("user", 1, BaseDal.NO_CACHE);
    Map<String, Object> user = result.get();
  • Пример 4
    // Поиск с составным первичным ключом
    QueryCriteria queryCriteria = new QueryCriteria();
    queryCriteria.setTable("user");
    Criteria criteria = queryCriteria.createCriteria();
    criteria.andColumnEqualTo("name", "uncode-dal");
    criteria.andColumnEqualTo("pwd", "uncode-dal-mybatis");
    queryCriteria.setSelectOne(true);
    QueryResult result = baseDAL.selectByCriteria(queryCriteria);
    Map<String, Object> user = result.get();
* Пример 1
    ```java
    Map<String, Object> user = new HashMap<String, Object>();
    user.put("name", "uncode");
    user.put("pwd", "faster");
    // Первый аргумент — имя таблицы
    int result = baseDAL.insert("user", user);
    ```* Обновление данных
 * Пример 1
     ```java
     Map<String, Object> user = new HashMap<String, Object>();
     user.put("name", "uncode-dal-mybatis");
     user.setName("uncode-dal-mybatis");
     QueryCriteria queryCriteria = new QueryCriteria();
     queryCriteria.setTable("user");
     Criteria criteria = queryCriteria.createCriteria();
     criteria.andColumnEqualTo("name", "uncode");
     int result = baseDAL.updateByCriteria(user, queryCriteria);
     ```
 * Пример 2
     ```java
     Map<String, Object> user = new HashMap<String, Object>();
     user.put("email", "ywj_316@qq.com");
     user.put("id", 1);
     // Первый аргумент — имя таблицы, в user должны быть все первичные ключевые поля
     int result = baseDAL.updateByPrimaryKey("user", user);
     ```
 * Пример 3
     ```java
     Map<String, Object> user = new HashMap<String, Object>();
     // Устанавливаем значение как null
     user.put("email", null);
     user.put("id", 1);
     // Первый аргумент — это имя таблицы, в user должны присутствовать все первичные ключи
     int result = baseDAL.updateByPrimaryKey("user", user);
     ```
 * Пример 4
     ```java
     Map<String, Object> user = new HashMap<String, Object>();
     // Устанавливаем значение с помощью функции
     user.put("email", "=concat('11','22')");
     user.put("age", "=age+1");
     user.put("id", 1);
     // Первый аргумент — это имя таблицы, в user должны присутствовать все первичные ключи
     int result = baseDAL.updateByPrimaryKey("user", user);
     ```
 * Удаление
 * Пример 1
     ```java
     Map<String, Object> user = new HashMap<String, Object>();
     user.put("email", "ywj_316@qq.com");
     user.put("id", 1);
     // В user должны присутствовать все первичные ключи
     int result = baseDAL.deleteByPrimaryKey("user", user);
     ```
 * Пример 2
     ```java
     // Первым аргументом является имя таблицы
     int result = baseDAL.deleteByPrimaryKey("user", 165);
     ```
 * Пример 3
     ```java
     // Первым аргументом является имя таблицы
     int result = baseDAL.deleteByPrimaryKey("user", 165);
     ```            QueryCriteria queryCriteria = new QueryCriteria();
             queryCriteria.setTable("user");
             Criteria criteria = queryCriteria.createCriteria();
             criteria.andColumnEqualTo("name", "uncode");
             int result = baseDAL.deleteByCriteria(queryCriteria);
   * Другие операции
     * Пример 1
             QueryCriteria queryCriteria = new QueryCriteria();
             queryCriteria.setTable("user");
             Criteria criteria = queryCriteria.createCriteria();
             criteria.andColumnGreaterThan("age", 18);
             criteria.andColumnEqualTo("status", 1);
             // Подсчет количества записей
             int result = baseDAL.countByCriteria(queryCriteria);
   ### 5 Пример использования DTO
   * Поиск списков
     * Пример 1
             // Создание объекта запроса
             QueryCriteria queryCriteria = new QueryCriteria();
             // Установка имени таблицы, при этом имя класса должно совпадать с именем таблицы
             queryCriteria.setTable(User.class);
             // Создание объекта условий
             Criteria criteria = queryCriteria.createCriteria();
             // Установка условий
             criteria.append(Condition.GREATER_THAN, "age", 18).append("status", 1);
         // Запрос всех полей и кэширование
        QueryResult result = baseDAL.selectByCriteria(queryCriteria);
         // Запрос части полей без кэширования
         QueryResult result = baseDAL.selectByCriteria(new String[]{"name", "pwd"}, queryCriteria, BaseDal.NO_CACHE);
         List<User> users = result.asList(User.class);    * Пример 2
        // Создание объекта запроса
     QueryCriteria queryCriteria = new QueryCriteria();
        // Установка таблицы запроса, при этом имя класса должно совпадать с именем таблицы
     queryCriteria.setTable(User.class);
        // Установка пагинации
     queryCriteria.setPageIndex(1);
     queryCriteria.setPageSize(20);
        // Установка сортировки
     queryCriteria.setOrderByClause(User.AGE + " desc");
        // Пагинированный запрос с кэшированием на 60 секунд
     QueryResult result = baseDAL.selectPageByCriteria(queryCriteria, 60);
     List<User> users = result.asList(User.class);
     Map<String, Object> page = result.getPage();
  • Запрос по первичному ключу * Пример 1 User user = new User(); user.setId(1); // Кэширование на 20 секунд, все поля первичного ключа должны быть установлены QueryResult result = baseDAL.selectByPrimaryKey(user, 20); user = result.as(User.class);

    • Пример 2 // Отображение части полей, без использования кэша QueryResult result = baseDAL.selectByPrimaryKey(new String[]{"name", "pwd"}, User.class, 1, BaseDal.NO_CACHE); User user = result.as(User.class);

    • Пример 3 // Для объединенного первичного ключа можно использовать этот способ запроса QueryCriteria queryCriteria = new QueryCriteria(); queryCriteria.setTable(User.class); Criteria criteria = queryCriteria.createCriteria(); criteria.andColumnEqualTo(User.NAME, "uncode-dal"); criteria.andColumnEqualTo(User.PWD, "uncode-dal-mybatis"); queryCriteria.setSelectOne(true); QueryResult result = baseDAL.selectByCriteria(queryCriteria); User user = result.as(User.class);

  • Вставка

    • Пример 1 User user = new User(); user.setName("uncode"); user.setPwd("faster"); int result = baseDAL.insert(user); * Обновление
    • Пример 1
      User user = new User();
      user.setName("uncode-dal-mybatis");
      QueryCriteria queryCriteria = new QueryCriteria();
      queryCriteria.setTable(User.class);
      
      Criteria criteria = queryCriteria.createCriteria();
      criteria.andColumnEqualTo(User.NAME, "uncode");
      int result = baseDAL.updateByCriteria(user, queryCriteria);
    • Пример 2
      User user = new User();
      user.setEmail("ywj_316@qq.com");
      user.setId(1);
      // В объекте user должны быть установлены все первичные ключи
      int result = baseDAL.updateByPrimaryKey(user);
  • Удаление

    • Пример 1
      User user = new User();
      user.setId(1);
      // В объекте user должны быть установлены все первичные ключи
      int result = baseDAL.deleteByPrimaryKey(user);
    • Пример 2
      int result = baseDAL.deleteByPrimaryKey(User.class, 165);
    • Пример 3
      QueryCriteria queryCriteria = new QueryCriteria();
      queryCriteria.setTable(User.class);
      Criteria criteria = queryCriteria.createCriteria();
      criteria.andColumnEqualTo(User.NAME, "uncode");
      int result = baseDAL.deleteByCriteria(queryCriteria);
  • Другие операции

    • Пример 1
      QueryCriteria queryCriteria = new QueryCriteria();
      queryCriteria.setTable(User.class);
      Criteria criteria = queryCriteria.createCriteria();
      criteria.andColumnGreaterThan(User.AGE, 18);
      criteria.andColumnEqualTo(User.STATUS, 1);
      // Подсчет количества записей
      int result = baseDAL.countByCriteria(queryCriteria);

Авторское право

Автор: Янь Вэйцзюнь (ywj_316@qq.com, WeChat: yeweijun) Группа поддержки QQ: 47306892 Copyright © 2013 www.uncode.cn

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/uncode-uncode-dal-all.git
git@api.gitlife.ru:oschina-mirror/uncode-uncode-dal-all.git
oschina-mirror
uncode-uncode-dal-all
uncode-uncode-dal-all
master