jSqlBox5.0.4 lançado, meticulosamente elaborado e escrito em SQL sustentável

jSqlBox é uma ferramenta Java DAO. Suas principais características são excelente arquitetura, tamanho pequeno e completo. Basicamente, todas as funções relacionadas às operações de banco de dados são fornecidas por jSqlBox. Suas principais características são:  

1. Existe apenas um único pacote jar de 1M e não depende de nenhuma biblioteca de terceiros. Ele pode ser usado de forma independente e também suporta o uso no ambiente Spring.  
2. O kernel é baseado em DbUtils e é compatível com ele.No pior caso, pode ser desatualizado e usado como DbUtils, que é rápido para começar. 
3. Defenda a ortografia de SQL em java, método de escrita SQL incorporado de parâmetro original (será descrito em detalhes abaixo).  
4. Suporta sub-banco de dados e subtabela, multilocatário, transação declarativa, transação distribuída, texto longo, ActiveRecord.
5. Suporta mais de 80 dialetos de banco de dados, paginação, transformação de função, geração de DDL, geração de código-fonte de entidade, exportação de entidade ou estrutura de banco de dados para Excel.
6. As anotações da classe de entidade principal são compatíveis com os padrões JPA. 

Escreva SQL diretamente em Java, e a escrita SQL embutida de parâmetro original é o principal recurso do jSqlBox. Qual é o problema com a escrita SQL tradicional? O maior problema é que ela é "impossível de manter". Por exemplo, o seguinte SQL é difícil de adicionar, atualizar ou excluir colunas porque é preciso muito dinheiro para encontrar as posições correspondentes dos nomes e parâmetros das colunas. Com o tempo, quanto mais longo é o SQl, mais difícil é manter:

insert into tb_price_setting (id,code,adult_price,child_price,total_price,adult_note,child_note,
currency,type,time_zone,status,include_tax,adult_discount,child_discount,total_discount,
created_at,updated_at,) values(1200, "BJD837434", 50, 30, 80, "15以上全价", "8-15半价", "USD, 8,
"UTC", "A", 3.03, 0, 0, 0, "2019-09-17 04:07:55", "2020-03-10 22:43:00";

Depois de usar jSqlBox, a escrita é assim:

DB.exe("insert into tb_price_setting (", //
	"id,", par(1200), //
	"code,", par("BJD837434"), //
	"adult_price,", par(50), //
	"child_price,", par(30), //
	"total_price,", par(80), //
	"adult_note,", par("15以上全价"), //
	"child_note,", par("8-15半价"), //
	"currency,", par("USD"), //
	"type,", par(8), //
	"time_zone,", par("UTC"), //
	"status,", par("A"), //
	"include_tax,", par(3.03), //
	"adult_discount,", par(0), //
	"child_discount,", par(0), //
	"total_discount,", par(0), //
	"created_at,", par("2019-09-17 04:07:55"), //
	"updated_at,", par("2020-03-10 22:43:00"), //
	")", valuesQuestions());

Os parâmetros do SQL em jSqlBox podem ser movidos para qualquer posição. Esta forma de escrever melhora muito a manutenção do SQL sem reduzir a legibilidade do SQL e mantendo funções SQL nativas. Ao adicionar ou excluir colunas Basta adicionar e excluir as linhas correspondentes. Comparado com JPA usando entidade ORM para CRUD, MyBatis usa modelos para escrever SQL, jSqlBox é a maneira mais simples e clara de escrever, soletrar SQL diretamente e finalizar o trabalho, sem necessidade de introduzir classes de entidade e modelos adicionais. O problema com o modelo é que ele precisa ser escrito duas vezes, o nome da coluna é escrito uma vez no modelo e precisa ser escrito novamente quando os parâmetros são substituídos, o que aumenta a carga de trabalho de manutenção.

Alunos perspicazes podem descobrir que este tipo de string de nome de coluna é escrito diretamente em SQL. Se o campo do banco de dados mudar, o IDE não pode detectar e relatar erros. Em outras palavras, o SQL não suporta reconstrução. Como resolver este problema? Preocupe-se, esta atualização oferece uma solução.

Solução 1: Use a ferramenta de última geração Q do jSqlBox para gerar automaticamente tipos Q de todas as tabelas de acordo com o conteúdo do banco de dados e personalizar o formato do tipo Q. Cada vez que o banco de dados muda, apenas gere novamente a categoria Q. A classe Q contém todas as constantes de campo da tabela. O SQL acima pode ser escrito da seguinte forma:

QTbPriceSetting p=QTbPriceSetting.instance;
DB.exe("insert into ",p," (", //
	p.id, par(1200), //
	p.code, par("BJD837434"), //
	p.adult_price, par(50), //
	p.child_price, par(30), //
	p.total_price, par(80), //
	p.adult_note, par("15以上全价"), //
	p.child_note, par("8-15半价"), //
	p.currency, par("USD"), //
	p.type, par(8), //
	p.time_zone, par("UTC"), //
	p.status, par("A"), //
	p.include_tax, par(3.03), //
	p.adult_discount, par(0), //
	p.child_discount, par(0), //
	p.total_discount, par(0), //
	p.created_at, par("2019-09-17 04:07:55"), //
	p.updated_at, par("2020-03-10 22:43:00"), //
	")", valuesQuestions());

Solução 2: use o plug-in Maven de QueryDSL, que é adequado para situações em que já existem classes de entidade JPA. Este plug-in pode varrer as classes de entidade JPA existentes do projeto para gerar classes Q e jSqlBox pode usar suas classes Q para unir SQL nativo. O exemplo de uso é o seguinte, que é semelhante ao uso do esquema 1. Quando o nome da tabela é necessário, a instância da classe Q é passada diretamente, e quando o nome da coluna SQL é necessário, o campo constante da classe Q pode ser passado:

QUser u = QUser.user;
DB.exe("insert into ", u, " (",  u.id, ",", par(1),  u.userName, ",", par("张三"),  u.userAge, par(15),  ")", valuesQuestions());

Consulte a seção "SQL Supported Refactoring" do manual do usuário do jSqlBox para a introdução detalhada dos dois esquemas acima.

jSqlBox (versão 5.0.4.jre8) Este conteúdo de atualização:
1. Como mencionado acima, a classe Q recém-gerada e usada para escrever SQL que oferece suporte à reconstrução. Para gerar a classe Q de acordo com o banco de dados, você só precisa chamar o seguinte método em jSqlBox:   
      TableModelUtils.db2QClassSrcFiles (ctx.getDataSource (), ctx.getDialect (), "c: \\ outputFolder", "com.demo", "Q") ;
2. Novas funções de locatário foram adicionadas. Para obter detalhes, consulte a introdução no manual do usuário "jSqlBox advanced-master-slave, sub-tabela de banco de dados, multi-tenant"
3. TableModelUtilsOfDB adiciona o método compareDB, que é uma pequena função que pode ser usada para comparar se as duas estruturas de banco de dados são diferentes. O uso é o seguinte:
   TableModelUtilsOfDb.compareDbIgnoreLength (connection1, connection2);
4. Uma nova opção de configuração SqlItemhandler para DbContext pode ser usada Personalize seu próprio analisador de entrada SQL.
5. O novo método qryBooleanValue na classe DbPro retorna um valor booleano.
6. Dois novos métodos, notBlank e noBlank, são adicionados à classe DB, que são usados ​​para determinar a condição de string vazia ao unir dinamicamente SQL, que é semelhante aos métodos de uso notNull e noNull originais. Por exemplo, o seguinte método de escrita deve ser
usado user.getAge Quando () for nulo, a coluna idade não será inserida. Quando usuário.

DB.exe("insert into users (", //
           " name ,", par("Sam"), //
            notNull("age,", user.getAge()), //
            notBlank("email,", user.getEmail()), //
            " address ", par("Canada"), //
            ") ", valuesQuestions()); 

O método when () em DB também pode ser usado para emendar SQL dinamicamente com base nas condições, mas o método notBlank / noBlank / notNull / noNull é mais conciso de escrever. 

Acho que você gosta

Origin www.oschina.net/news/126460/jsqlbox-5-0-4-released
Recomendado
Clasificación