Jsql 是 Jfinal 的 SQL 插件
主要特点:
SQL与JAVA代码分离
XML配置
JS语法的SQL模板引擎,简单易学
模板标签:
<%=%> ,例如:name = <%=name%>,将转换成 name = ? ,并将参数变量添加到Args中
<%-%> ,例如:name = <%-name%>,将转换成 name = ? ,并将参数变量转义后添加到Args中
<%+%> ,例如:name = <%+name%>,将转换成 name = 'jfinal'
用法:
主配置文件JSql-Config.xml
<?xml version="1.0" encoding="UTF-8"?> <jsqlconfig> <jsqlpath path="/JSql-User.xml" /> </jsqlconfig>
SQL配置文件JSql-User.xml
<?xml version="1.0" encoding="UTF-8"?> <jsql namespace="user"> <sql id="getusers"> <![CDATA[ select * from user t where 1 =1 and <%if(typeof(state) != 'undefined'){%> t.state = <%=state%> <%}%> <%if(typeof(ids) != 'undefined'){%> and t.id in (<%for(var i=0;i<ids.length;i++){%> <%=ids[i]%> <%if(i < ids.length-1){%> , <%}%> <%}%>) <%}%> order by name desc ]]> </sql> </jsql>
JAVA初始化
new JSqlPlugin("/JSql-Config.xml").start();
调用SQL
Map<String, Object> m = new HashMap<String, Object>(); SqlArgs sqlArgs = JSqlKit.getSqlArgs("user.getusers",m);
执行SQL语句
Db.find(sqlArgs.getSql(), sqlArgs.getArgs().toArray());
1、查询出符合条件的数据 List<Record> list = db.find(sql); 2、查出符合条件的第一条数据 Record record = Db.findFirst(sqlPara); 3、获取数值类型的单个返回值; Int count = Db.queryInt( sqlPara ); Long count = Db.queryLong( sqlPara ); 基本类型 =
在上一小节,遗留了一个命名空间没有讲。这个知识点其实很好理解,就像包名的概念一样。接下来就让我们一起来熟悉一下#namespace指令的用法。 因为#namespace的存在,在程序中可以将命名相同的sql标识区分开。有点类似现实生活中两个重名的同学一样,可以通过他们在教室的坐位来区分谁是谁一样。也许这里例子有点不恰当,但是聪明的你应该明白了。接下来,请看代码。 1、sql文件中的代码 #name
问题内容: 可以说在我的代码中我有用户名和一个值。现在,我需要将其保存在数据库中,但首先需要获取与该用户名相对应的ID,因为此表以pk / fk链接到users表。我该怎么做?我知道您可以执行INSERT(blah)SELECT等操作,但是看起来像是直接复制,我需要将SELECT的结果与fk列一起插入值。 用户表:[UserID(pk),用户名] 阿凡达表:[UserID(fk),AvatarUR
问题内容: 我得到了一个包含4个字段的表格: id,int(11),自动收到的电子邮件,varchar(32)通过,varchar(32)date_created,日期 我的问题是查询的外观如何?我的意思是我不需要将第一个值插入id,因为它是自动递增的,但是我必须插入所有值。 问题答案: 在SQL中,您可以指定要在语句中设置的列:
问题内容: 在一个表(jdbc / connector-mysql数据库)中插入1000行的最佳/最省时的方法是什么?(它是一个缓冲区,每次充满时都需要转储到数据库中) 1-一个自动生成/固定的SQL语句? 2 3-存储过程 4-通过文件批量插入数据? 5-(您的解决方案) 问题答案: LOAD DATA INFILE语句可能是提高性能的最佳选择。(来自上面的选项列表中的#4)尽管由于您需要创建中
我必须准备一个SQL插入文件,它将数据从测试导出到生产实例。其中一列是表中的CLOB。 当我在UAT实例中进行测试运行时,我得到以下错误 SQL脚本是我唯一的选择。 更新1 如果将insert语句保存在一个名为test.sql的文件中,并试图从SQLPLUS以@d:\temp\test.sql的形式执行,则会出现错误 Insert语句
问题内容: 我开发了一种将许多东西插入数据库的表单。但是以某种方式,当页面被填满时,它也只插入数据库管理员的user_password。我该如何解决这个问题? 问题答案: 您忘记输入关键字“ VALUES”。检查INSERT INTO的语法。 您传递给MySQL的变量(“ $ name”,“ $ password”,“ $ email”,“ $ contact”,“ $ age”,“ $ gend
问题内容: 我试图像这样将一些值插入到SQL CE数据库中,但没有任何反应。我做错了什么? 问题答案: 您如何“尝试插入一些值…”?您是从Visual Studio运行该应用程序吗?您为什么认为“什么都没有发生”?您在运行应用程序后是否要打开原始的.sdf文件? 在解决方案资源管理器中检查数据库文件的“复制文件”属性;是“复制”吗?这意味着Visual Studio将在bin文件夹中创建原始数据库
问题内容: 插入数据库时出现错误。 代码: 忽略dbquery,与mysql_query完全一样。 我收到的错误是: 不知道为什么会引发此错误! 问题答案: 教一个人如何钓鱼。 如果查询失败,那么您应该做的第一件事就是回显您要发送的查询: 通常,最终查询到底出了什么问题,这是很明显的。要特别注意查询中的动态内容,通常要注意MySQL抱怨的区域。 如果看起来还可以,那么您会寻找可能需要转义的单词
为了避免DRY,我试图创建一个sql INSERT语句,其中包含变量列名和通过ScalikeJDBC的sql内插填充这些列的数据: 当我把这个叫做: sql语句是:INSERT INTO?(?,?)值(?,?) 参数为:List(My_Table,key,email,42,user@email.com) 您的SQL语法中有一个错误;检查与您的MySQL server版本对应的手册,查找使用“my_