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

OSCHINA-MIRROR/Leytton-ThinkJD

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 5.3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 27.11.2024 22:46 184e90d

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 )

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

1
https://api.gitlife.ru/oschina-mirror/Leytton-ThinkJD.git
git@api.gitlife.ru:oschina-mirror/Leytton-ThinkJD.git
oschina-mirror
Leytton-ThinkJD
Leytton-ThinkJD
master