В одну строку: (надеюсь, что смогу) Пишите код, например язык Dynami c (Laravel / Django), и наслаждайтесь производительностью Java.
Мы знаем, что очень многословно записывать коды MyBatis ... Например, в качестве игрушечного примера, следующий код MyBatis:
public interface CommentDao {
@Select(
"SELECT * FROM comments"+
"<foreach collection='blogIds' item='id' open='(' separator=','
close=')'>"+
"#{id}"+
"</foreach>"+
"AND id <= #{pageStart}"+
"ORDER BY id DESC"+
"LIMIT #{pageLimit}"
)
List<Comment> getComments(List<Integer> blogIds, long pageStart, int pageLimit);
}
Какой ИМХО слишком долгооооооооооооооооооооооооооооооооооооо : (
Поэтому я предлагаю следующее: нам нужно только записать очень простой Python (или PHP, будет определен) код:
def getComments(blogIds, pageStart, pageLimit):
comments.select()
.whereBlogId(blogIds)
.page(pageStart, pageLimit)
и автоматически сгенерирует большой код MyBatis, указанный выше (например, одним щелчком python generate.py
)!
Примечание к указанному выше коду -
- Эти
.whereBlogId
, et c, все статически типизированы (генератором кода), поэтому, используя PyCharm или Intellij IDEA, вы получите мощное завершение кода. - Что касается упрощения кода - (i) long
<foreach>
полностью ушел; (ii) Мы пишем семантикой вместо синтаксиса . Таким образом, нам не нужно говорить t три вещи WHERE id<=start
& ORDER BY id
& LIMIT limit
. Нам нужно только сказать семантику page()
.
Конечно, это всего лишь простой пример. Я просто хочу проиллюстрировать потенциал этого подхода (Python / PHP generator + MyBatis):)
Вопрос : Хорошо ли мое предложение? Или будут проблемы, которых я не видел?
Спасибо за любые предложения!
ps Я исследовал другие решения, такие как JOOQ, MyBatis Plus, MyBatis Generator и др. * 1059. *. Но ИМХО ни один из них не обладает хорошими свойствами выше ... При необходимости я могу предоставить больше об этом