jSqlBox5.0.4 lanzado, meticulosamente diseñado y escrito en SQL mantenible

jSqlBox es una herramienta DAO de Java. Sus principales características son una excelente arquitectura, tamaño pequeño y todas las funciones. Básicamente, todas las funciones relacionadas con las operaciones de la base de datos son proporcionadas por jSqlBox. Sus principales características son:  

1. Solo hay un paquete jar de 1M y no depende de bibliotecas de terceros. Se puede usar de forma independiente y también admite el uso en el entorno Spring.  
2. El kernel está basado en DbUtils y es compatible con él. En el peor de los casos, se puede degradar y usar como DbUtils, que es rápido para comenzar. 
3. Abogar por la ortografía de SQL en java, el método de escritura de SQL incorporado del parámetro original (se describirá en detalle a continuación).  
4. Soporte de sub-base de datos y sub-tabla, multi-inquilino, transacción declarativa, transacción distribuida, texto largo, ActiveRecord.
5. Admite más de 80 dialectos de bases de datos, paginación, transformación de funciones, generación de DDL, generación de código fuente de entidad, exportación de estructura de entidad o base de datos a Excel.
6. Las anotaciones de la clase de entidad principal son compatibles con los estándares JPA. 

Escriba SQL directamente en Java, y la escritura de SQL incorporado de parámetros originales es la característica principal de jSqlBox. ¿Cuál es el problema con la escritura SQL tradicional? El mayor problema es que no se puede mantener. Por ejemplo, el siguiente SQL es difícil de agregar, actualizar o eliminar columnas porque se necesita mucho dinero para encontrar las posiciones correspondientes de los nombres y parámetros de las columnas. Con el tiempo, cuanto más largo sea SQl, más difícil será mantener:

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";

Después de usar jSqlBox, la escritura es así:

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());

Los parámetros de SQL en jSqlBox se pueden mover a cualquier posición. Esta forma de escritura mejora enormemente la capacidad de mantenimiento de SQL sin reducir la legibilidad de SQL y sin mantener las funciones nativas de SQL. Al agregar o eliminar columnas Simplemente agregue y elimine las filas correspondientes. Comparado con JPA que usa entidad ORM para CRUD, MyBatis usa plantillas para escribir SQL, jSqlBox es la forma más simple y clara de escribir, deletrear SQL directamente y terminar el trabajo, sin necesidad de introducir clases de entidad y plantillas adicionales. El problema con la plantilla es que debe escribirse dos veces, el nombre de la columna se escribe una vez en la plantilla y debe escribirse nuevamente cuando se sustituyen los parámetros, lo que aumenta la carga de trabajo de mantenimiento.

Los estudiantes agudos pueden encontrar que este tipo de cadena de nombre de columna está escrito directamente en SQL. Si el campo de la base de datos cambia, el IDE no puede detectar ni reportar errores. En otras palabras, SQL no admite la reconstrucción. ¿Cómo solucionar este problema? Preocupación, esta actualización proporciona una solución.

Solución 1: Utilice la última herramienta de generación Q de jSqlBox para generar automáticamente tipos Q de todas las tablas de acuerdo con el contenido de la base de datos y personalizar el formato de tipo Q. Cada vez que cambia la base de datos, simplemente regenere la categoría Q. La clase Q contiene todas las constantes de campo de la tabla. El SQL anterior se puede escribir de la siguiente manera:

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());

Solución 2: utilice el complemento Maven de QueryDSL, que es adecuado para situaciones en las que ya existen clases de entidad JPA. Este complemento puede escanear las clases de entidad JPA existentes del proyecto para generar clases Q, y jSqlBox puede usar sus clases Q para empalmar SQL nativo. El ejemplo de uso es el siguiente, que es similar al uso del esquema 1. Cuando se necesita el nombre de la tabla, la instancia Q se pasa directamente, y cuando se necesita el nombre de la columna SQL, el campo constante de la clase Q se puede pasar:

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

Consulte la sección "Refactorización compatible con SQL" del manual del usuario de jSqlBox para obtener una introducción detallada de los dos esquemas anteriores.

jSqlBox (versión 5.0.4.jre8) El contenido de esta actualización:
1. Como se mencionó anteriormente, la clase Q recién generada y usada para escribir SQL que admita la reconstrucción. Para generar la clase Q de acuerdo con la base de datos, solo necesita llamar al siguiente método en jSqlBox:   
      TableModelUtils.db2QClassSrcFiles (ctx.getDataSource (), ctx.getDialect (), "c: \\ outputFolder", "com.demo", "Q") ;
2. Se agregan nuevas funciones de inquilino. Para obtener más información, consulte la introducción en el manual del usuario "jSqlBox advanced-master-slave, sub-database sub-table, multi-tenant".
3. TableModelUtilsOfDB agrega el método compareDB, que es una pequeña función que se puede usar para comparar si las dos estructuras de la base de datos son diferentes. El uso es el siguiente:
   TableModelUtilsOfDb.compareDbIgnoreLength (conexión1, conexión2);
4. DbContext agrega una nueva opción de configuración SqlItemhandler que se puede usar Personalice su propio analizador de entrada SQL.
5. El nuevo método qryBooleanValue de la clase DbPro devuelve un valor booleano.
6. Se agregan dos nuevos métodos, notBlank y noBlank, a la clase DB, que se utilizan para determinar la condición de cadena vacía al empalmar SQL dinámicamente, que es similar a los métodos de uso originales notNull y noNull. Por ejemplo, se debe
usar el siguiente método de escritura user.getAge Cuando () es nulo, no se insertará la columna de edad.

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

El método when () en DB también se puede usar para empalmar SQL dinámicamente en función de las condiciones, pero el método notBlank / noBlank / notNull / noNull es más conciso de escribir. 

Supongo que te gusta

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