JFinal框架操作oracle数据库
JFinal框架操作oracle数据库,需要在configPlugin()方法中配置链接oracle数据库的相关配置 配置JFinal数据库操作插件,configPlugin方法 这里我加载jdbc.properties配置文件实在configConstant加载的 @Overridepublic void configConstant(Constants me) {lo
JFinal框架操作oracle数据库,需要在configPlugin()方法中配置链接oracle数据库的相关配置
配置JFinal数据库操作插件,configPlugin方法
这里我加载jdbc.properties配置文件实在configConstant加载的
@Override public void configConstant(Constants me) { loadPropertyFile("jdbc.properties");//加载配置文件 me.setDevMode(getPropertyToBoolean("config.devModel", false)); me.setViewType(ViewType.JSP); me.setEncoding("UTF-8"); }
jdbc.properites配置文件
oracle.driver=oracle.jdbc.driver.OracleDriver oracle.url=jdbc:oracle:thin:@127.0.0.1:1521:orcl oracle.username=scott oracle.password=xiaohu config.devModel=true
@Override public void configPlugin(Plugins me) { ActiveRecordPlugin arp=null; String driver=getProperty("oracle.driver"); String url=getProperty("oracle.url"); String username=getProperty("oracle.username"); String password=getProperty("oracle.password"); DruidPlugin dp=new DruidPlugin(url, username, password, driver); me.add(dp); arp=new ActiveRecordPlugin(dp);//设置数据库方言 arp.setDialect(new OracleDialect()); arp.setContainerFactory(new CaseInsensitiveContainerFactory());//忽略大小写 me.add(new EhCachePlugin()); arp.addMapping("users", "id",Users.class); me.add(arp); }
需要注意一点的是,由于oracle数据库中在创建表时,会自动的将所有的字段自动转为大写,因此在避免后面操作的时候出现大小写错误的相关异常,这里需要配置忽略大小写的功能
arp.setContainerFactory(new CaseInsensitiveContainerFactory());//忽略大小写
如果不需要对数据库进行增加操作,则必须配置忽略大小写,如果不配置忽略大小写,在保存源代码的该段代码中会出现属性id找不到的异常
/** * Save model. */ public boolean save() { Config config = getConfig(); Table table = getTable(); StringBuilder sql = new StringBuilder(); List<object> paras = new ArrayList<object>(); config.dialect.forModelSave(table, attrs, sql, paras); // if (paras.size() == 0) return false; // The sql "insert into tableName() values()" works fine, so delete this line // -------- Connection conn = null; PreparedStatement pst = null; int result = 0; try { conn = config.getConnection(); if (config.dialect.isOracle()) pst = conn.prepareStatement(sql.toString(), new String[]{table.getPrimaryKey()}); else pst = conn.prepareStatement(sql.toString(), Statement.RETURN_GENERATED_KEYS); config.dialect.fillStatement(pst, paras); result = pst.executeUpdate(); <span style="color:#ff0000;">getGeneratedKey(pst, table);//如果不配置忽略大小写,执行到这里会出现异常,虽然可以添加到数据库,但是这里报错,界面还是会显示500错误</span></object></object>
getModifyFlag().clear(); return result >= 1; } catch (Exception e) { throw new ActiveRecordException(e); } finally { config.close(pst, conn); } }
<span style="color:#ff0000;">getGeneratedKey()源代码部分</span>
/** * Get id after save method. */ private void getGeneratedKey(PreparedStatement pst, Table table) throws SQLException { String pKey = table.getPrimaryKey(); if (get(pKey) == null || getConfig().dialect.isOracle()) { ResultSet rs = pst.getGeneratedKeys(); if (rs.next()) { Class colType = table.getColumnType(pKey); if (colType == Integer.class || colType == int.class) set(pKey, rs.getInt(1)); else if (colType == Long.class || colType == long.class) set(pKey, rs.getLong(1)); else set(pKey, rs.getObject(1)); // It returns Long object for int colType rs.close(); } } }
set()源代码部分
/** * Set attribute to model. * @param attr the attribute name of the model * @param value the value of the attribute * @return this model * @throws ActiveRecordException if the attribute is not exists of the model */ public M set(String attr, Object value) { <span style="color:#ff0000;">if (getTable().hasColumnLabel(attr)) {//执行到这里返回false</span> attrs.put(attr, value); getModifyFlag().add(attr); // Add modify flag, update() need this flag. return (M)this; } throw new ActiveRecordException("The attribute name is not exists: " + attr);//抛出该异常 }
现在来说说如果不配置,为什么会出现 The attribute name is not exists:这个异常,这是因为oracle中的字段是大写的,而set方法中传入的attr属性的值是小写,而getTable()中的属性对应的就是oracle字段,这些属性则是大写,因此这里使用getTable().hasColumnLabel(attr)判断是否存在该字段,就会找不到,这时就会抛出该异常,因此就必须配置忽略大小写的方法,就不会出现该异常
实体类:
package com.tenghu.core.model; import com.jfinal.plugin.activerecord.Model; public class Users extends Model<users>{ public static Users dao=new Users(); }</users>
操作数据:
Users users=new Users(); users.set("id", "users_sequence.nextval"); users.set("username", "张三"); users.set("pwd", "sdfsdfs"); users.save(); List<users> testList=Users.dao.find("select * from users");</users>

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

MySQL is an open source relational database management system, mainly used to store and retrieve data quickly and reliably. Its working principle includes client requests, query resolution, execution of queries and return results. Examples of usage include creating tables, inserting and querying data, and advanced features such as JOIN operations. Common errors involve SQL syntax, data types, and permissions, and optimization suggestions include the use of indexes, optimized queries, and partitioning of tables.

Solutions to Oracle cannot be opened include: 1. Start the database service; 2. Start the listener; 3. Check port conflicts; 4. Set environment variables correctly; 5. Make sure the firewall or antivirus software does not block the connection; 6. Check whether the server is closed; 7. Use RMAN to recover corrupt files; 8. Check whether the TNS service name is correct; 9. Check network connection; 10. Reinstall Oracle software.

MySQL is chosen for its performance, reliability, ease of use, and community support. 1.MySQL provides efficient data storage and retrieval functions, supporting multiple data types and advanced query operations. 2. Adopt client-server architecture and multiple storage engines to support transaction and query optimization. 3. Easy to use, supports a variety of operating systems and programming languages. 4. Have strong community support and provide rich resources and solutions.

The method to solve the Oracle cursor closure problem includes: explicitly closing the cursor using the CLOSE statement. Declare the cursor in the FOR UPDATE clause so that it automatically closes after the scope is ended. Declare the cursor in the USING clause so that it automatically closes when the associated PL/SQL variable is closed. Use exception handling to ensure that the cursor is closed in any exception situation. Use the connection pool to automatically close the cursor. Disable automatic submission and delay cursor closing.

In Oracle, the FOR LOOP loop can create cursors dynamically. The steps are: 1. Define the cursor type; 2. Create the loop; 3. Create the cursor dynamically; 4. Execute the cursor; 5. Close the cursor. Example: A cursor can be created cycle-by-circuit to display the names and salaries of the top 10 employees.

To stop an Oracle database, perform the following steps: 1. Connect to the database; 2. Shutdown immediately; 3. Shutdown abort completely.

Building a Hadoop Distributed File System (HDFS) on a CentOS system requires multiple steps. This article provides a brief configuration guide. 1. Prepare to install JDK in the early stage: Install JavaDevelopmentKit (JDK) on all nodes, and the version must be compatible with Hadoop. The installation package can be downloaded from the Oracle official website. Environment variable configuration: Edit /etc/profile file, set Java and Hadoop environment variables, so that the system can find the installation path of JDK and Hadoop. 2. Security configuration: SSH password-free login to generate SSH key: Use the ssh-keygen command on each node

SQL statements can be created and executed based on runtime input by using Oracle's dynamic SQL. The steps include: preparing an empty string variable to store dynamically generated SQL statements. Use the EXECUTE IMMEDIATE or PREPARE statement to compile and execute dynamic SQL statements. Use bind variable to pass user input or other dynamic values to dynamic SQL. Use EXECUTE IMMEDIATE or EXECUTE to execute dynamic SQL statements.
