多表操作
以下解决多表查询分页以及数据库表字段相同会覆盖的问题
参考资料:https://www.jfinal.com/doc/5-10
StringBuilder sql =new StringBuilder(" from clsd_lot.lot_package_car pc left join clsd_lot.lot_car c on pc.car_id=c.id left join clsd_lot.lot_info i on pc.lot_id = i.id where pc.lot_id=? and pc.package_id=?");
List values =new ArrayList<>();
if(StrUtil.isNotEmpty(carNo)){
sql.append(" and c.car_no=? ");
values.add(carNo);
}
StringBuilder totalRowSql =new StringBuilder("select count(*) ").append(sql);
StringBuilder findSql =new StringBuilder("select pc.*,c.car_no,i.name as lot_name").append(sql);
if(values.size() ==1){
return Db.paginateByFullSql(pageNum, pageSize, totalRowSql.toString(), findSql.toString(), lotId, packageId, values.get(0));
}else {
return Db.paginateByFullSql(pageNum, pageSize, totalRowSql.toString(), findSql.toString(), lotId, packageId);
}
jpress资料: http://www.jpress.io 源代码下载:https://gitee.com/fuhai/jpress
插件模式
JPress 插件和应用不一样的地方,只是在项目的resource下增加了一个插件的配置 addon.txt 文件,用于对此应用(或者说是插件)的描述。例如:
id:插件的唯一ID,在一个JPress应用中只能安装同一个ID的插件。建议用包名+项目名的方式进行命名
title:插件的标题或名称
description:插件的描述
author:插件的作者
authroWebsite:插件作者的官方网站
version:版本
versionCode:版本号,当该插件进行升级的时候,用对对比当前插件是否可以升级
只是在项目的resource下增加了一个插件的配置 config.txt 文件,#注释
db.type = mysql
db.url=jdbc\:mysql\://db_url\:3306/db_name?useUnicode\=true&useSSL\=false&characterEncoding\=utf8&zeroDateTimeBehavior\=convertToNull
db.user=root
db.password=pwd
db.driverClassName = "com.mysql.jdbc.Driver"
#db.connectionInitSql
db.poolName = HikariCP
db.cachePrepStmts = 1
db.prepStmtCacheSize = 500
db.prepStmtCacheSqlLimit = 2048
db.maximumPoolSize = 15
#db.maxLifetime
#db.idleTimeout
db.minimumIdle = 5
#db.sqlTemplatePath
#db.sqlTemplate
#db.factory
#db.shardingConfigYaml
#db.dbProFactory
#db.containerFactory
#db.transactionLevel
db.table=table1,table2
#此数据源包含哪些表,这个配置会覆盖@Table注解的配置
#db.exTable #该数据源排除哪些表,这个配置会修改掉@Table上的配置
#db.dialectClass
#db.activeRecordPluginClass
start 启动 多数据源修改jboot.properties 文件如下:
#Auto create by JPress
#Fri Feb 07 18:09:32 CST 2020
# jwt密钥,用于小程序等API通信(建议32位以上)
jboot.web.jwt.secret=b63dd1d001d94231b26bb9f854f8b038
# cookie的加密密钥(建议32位以上)
jboot.web.cookieEncryptKey=bvb0ac970c65422fad8f1f9f9fcc87xc
#开发dev 生产product
jboot.app.mode=dev
jboot.datasource.url=jdbc\:mysql\://localhost\:3306/db1?useUnicode\=true&useSSL\=false&characterEncoding\=utf8&zeroDateTimeBehavior\=convertToNull
jboot.datasource.type=mysql
jboot.datasource.password=root
jboot.datasource.user=root
jboot.datasource.table=table1,table2,table3
jboot.datasource.parking.url=jdbc\:mysql\://localhost\:3306/db2?useUnicode\=true&useSSL\=false&characterEncoding\=utf8&zeroDateTimeBehavior\=convertToNull
jboot.datasource.parking.type=mysql
jboot.datasource.parking.password=root
jboot.datasource.parking.user=root
jboot.datasource.parking.table=table1,table2,table3
注: parking 自定义名字
读取配置文件内容
PropKit.use("config.txt");
String domain=PropKit.get("lot.domain");
本机器IP
InetAddress address=InetAddress.getLocalHost();
Mac 命令
cd /Users/cgw/Documents/clsd_lot (项目根目录)
mvn clean install 重新编译整个项目
starter -> target 下的文件会清空
在jpress-addon-lot (插件模块目录)
运行 mvn clean install 重新编译当前的目录
mvn package 打包war
注意⚠️:
请查看下 /WEB-INF/classes 目录下是否有 jboot.porperties 和 install.lock 这两个文件,决定项目是否走初始化流程。
tomcat运行为例:日志
路径:starter-tomcat -> src -> main -> resources 下的 logbook.xml 文件配置日志输出路径。
<property name="log_dir" value="lot_logs"/>
tomcat -> bin 目录下生成日志文件lot_logs文件夹