0x04 查询数据
Операция | Параметр | Описание |
---|---|---|
select | List select() | |
List select(String key, Object value) | ||
find | T find() | |
T find(Object value) | ||
T find(String key, Object value) | ||
count | long count() | |
long count(String field) | ||
max | double max(String field) | |
min | double min(String field) | |
avg | double avg(String field) | |
sum | double sum(String field) |
//find 查询
//select id, name from jd_user where id > 4 order by id asc limit 0, 1
User res = D.M(User.class).field("id, name").where("id > ?", 4).order("id asc").find();
//find 根据 id 查询
//select * from jd_user where id = 3 limit 0, 1
User user = D.M(User.class).find(3);
//find 根据字段查询
//select * from jd_user where name = 'Tom' limit 0, 1
User user = D.M(User.class).fetchSql(true).find("name", "Bob");
//where, field 过滤
//select id, name, weight from jd_user where id > 3
List<User> res = D.M(User.class).field("id, name, weight").where("id > 3").select();
//group 分组查询
//select sex, sum(weight) as weight, avg(age) as age, count(id) as num from jd_user where id > 5 group by sex order by sex desc limit 0, 10
res = D.M(User.class).field("sex, sum(weight) as weight, avg(age) as age, count(id) as num").where("id > ?", 5).group("sex").order("sex desc").page(1, 10).select();
//join 联表查询
//select jd_user.id, name, weight, sum(gold) as num from jd_user left join jd_gold on user_id = jd_user.id where jd_user.id > 3 group by jd_user.id
res = D.M(User.class).field("jd_user.id, name, weight, sum(gold) as num").join("left join jd_gold on user_id = jd_user.id").where("jd_user.id > 3").group("jd_user.id").select();
//union 联表查询
//(select id, name from jd_user where id = 4 ) union all (select id, name from jd_user where id < 3) union (select id, name from jd_user where id = 3)
res = D.M(User.class).field("id, name").where("id = 4").union("select id, name from jd_user where id < 3", true).union("select id, name from jd_user where id = 3", false).select();
//统计查询
long num = new M(User.class).where("id > 3").count();
num = D.M(User.class).fetchSql(true).where("id > 3").count("id");
num = (long) D.M(User.class).fetchSql(false).where("id < 0").max("id");
num = (long) D.M(User.class).where("id < 3").max("id");
num = (long) D.M(User.class).min("id");
num = (long) D.M(User.class).where("id > 3").min("id");
num = (long) D.M(User.class).fetchSql(false).where("id > 3").avg("id");
double avg = D.M(User.class).fetchSql(false).where("id > 3").avg("id");
num = (long) D.M(User.class).where("id > 13441").sum("age");
Примечание: через вызов fetchSql(true) метода можно получить ThinkJD сгенерированный SQL-запрос (в виде исключения) и не выполнять операцию базы данных.
Структура таблицы пользователей:
Поле | Тип данных | Примечание |
---|---|---|
id | int | Пользовательский ID, автоинкрементный первичный ключ |
name | varchar | Имя пользователя |
age | tinyint | Возраст |
weight | float | Вес |
sex | tinyint | Пол 0 — женщина / 1 — мужчина |
time | int | Время |
Результаты запросов select()
и find()
упаковываются в JavaBean и возвращаются. JavaBean может использовать аннотации для сопоставления полей с базой данных.
Обратите внимание: при использовании JavaBean рекомендуется использовать базовые типы данных [Integer, Long, Boolean, Float, Double, Byte, Short, Char] вместо [integer, long, boolean, float, double, byte, short, char], поскольку последние не могут быть равны нулю, а первые могут. ThinkJD сохраняет обновления и другие операции, проверяя, не равно ли свойство нулю. Если нет, то оно добавляется в очередь обновлений базы данных. ThinkJD автоматически обнаруживает несоответствие типов данных и выдаёт предупреждение. Чтобы отключить эту функцию, вызовите D.setCheckField(false);
//@Table(name="user") по умолчанию класс называется так же, как таблица, но можно переопределить с помощью аннотаций
public class User {
//@Column(isKey=true) по умолчанию id является первичным ключом и автоинкрементом, можно переопределить с помощью аннотаций
private Long id;
private Integer age;
//@Column(name="userName") по умолчанию имя свойства совпадает с именем поля, можно переопределить с помощью аннотаций
private String name;
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )