LqJdbc 可以很轻松地操作数据库,使用了 C3P0 链接池,实现了hibernate的一些简单功能如 save,update,delete,find,create entity,也实现了spring jdbcTemplante的一些简单功能,如queryForList,execute,最新的3.0版,还实现了多数据源操作,可以进行读写分离。
LqJdbc 的好处就在于任何JAVA项目,直接导入 JAR,配制 lqjdbc.properties 即可使用,是轻量级开源项目。
网页底部为项目下载地址
实例:
import java.io.InputStream; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; import com.lq.util.jdbc.DatabasesJdbc; import com.lq.util.jdbc.DatabasesInterfaceT; import com.lq.util.jdbc.Jdbc; import com.lq.util.jdbc.LqEntitySql; import com.lq.util.jdbc.LqJdbcFactory; import com.lq.util.jdbc.LqResultSet; import com.lq.util.jdbc.LqShiWu; import com.lq.util.jdbc.Page; public class Test { public static void main(String[] args) { } public void pageSelectTest(){ //SQL SERVER 2005 分页查询用法 String sql="SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,* from payinfo"; String sqlCount="select count(*) from payinfo"; //其它数据库SQL分页 sql="SELECT * from payinfo"; sqlCount="select count(*) from payinfo"; Page page=Jdbc.findPage(sql, 1, 3, sqlCount, new Object[]{}); System.out.println(page.getData().size()); } public void shuoM(){ /** * 生成实体类 */ Jdbc.createEntity("com.entity","t_user","id"); /** * 生成插入修改SQL语句 */ Jdbc.createSQL("t_user","id"); //-------------------------下面为SQL语句操作---------------------------------------- /** * 查询 */ Jdbc.find("select * from t_user where id=?", new Object[]{"1"}); /** * 分页查询 */ Page page=Jdbc.findPage("select * from t_user where id=?", 1, 15, "select count(id) from t_user where id=?", new Object[]{"1"}); /** * 插入 */ Jdbc.execute("insert into test (name)values(?)", new Object[]{"吃人的肉"}); /** * 修改 */ Jdbc.execute("update test set name=? where id=?", new Object[]{"吃人的肉1","1"}); /** * 删除 */ Jdbc.execute("delete from test where id=?",new Object[]{"1"}); //------------------------下面为实体类操作------------------------------------------ final Test test=new Test(); Jdbc.save(test);//插入 Jdbc.update(test);//修改 Jdbc.delete(test);//删除 List list=Jdbc.find("select * from t_user", Test.class, new Object[]{});//查询返回实体类 //------------------------下面为事务操作------------------------------------------ /** * 事务处理 */ Jdbc.shiwu(new LqShiWu() { @Override public void shiwu(LqJdbcFactory jdbc) { if (1!=1) {//验证判断 jdbc.shiB=9;//如果验证通过返回自定义的状态码 return; } jdbc.find("select * from t_user where id=?", new Object[]{"1"}); jdbc.execute("insert into test (name)values(?)", new Object[]{"吃人的肉"}); jdbc.execute("update test set name=? where id=?", new Object[]{"吃人的肉1","1"}); jdbc.execute("delete from test where id=?",new Object[]{"1"}); Jdbc.save(test);//插入 Jdbc.update(test);//修改 Jdbc.delete(test);//删除 } }); /** * 图片的存储<文件> */ File img = new File("pic.jpeg"); int c = Jdbc.execute("update image set pic=?",new Object[]{img}); img.delete(); /** * 图片的存储<流> */ FileInputStream in = null; try { in =new FileInputStream(new File("pic.jpeg")); int c2 = Jdbc.execute("update image set pic=?",new Object[]{in}); } catch (FileNotFoundException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } finally { try { in.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 图片的读取 */ List<ListOrderedMap> listImg = Jdbc.getDS("pg").find("select area_img from company_area limit 1 "); InputStream inImg = (InputStream) listImg.get(0).get("area_img"); /** * 操作结果集 */ Jdbc.operationResultSet(new LqResultSet() { @Override public void getResultSet(LqJdbcFactory jdbc) { ResultSet rs = jdbc.findResultSet("select photo from t_user where id=?",new Object[]{"5"}); try { while (rs.next()) { InputStream in=rs.getBinaryStream("photo"); } } catch (SQLException e) { e.printStackTrace(); } } }); /** * 多种数据库操作 */ final StringBuffer sb=new StringBuffer(); final List listCs2=new ArrayList(); Jdbc.sql(new DatabasesInterface() { public String oracle() { sb.append("select * from admin where id=?"); listCs2.add("1"); return null; } public String mysql() { sb.append("select * from admin where id=?"); listCs2.add("1"); return null; } public String sqlserver() { sb.append("select * from admin where id=?"); listCs2.add("1"); return null; } }); List list2=Jdbc.find(sb.toString(),listCs2.toArray()); System.out.println(list2); /** * 批量执行 */ final String sql="insert into test (name)values(?)"; Jdbc.piliang(sql,new LqPiLiang() { public void piliang(LqJdbcFactory jdbc) { for (int i = 0; i < 100; i++) { jdbc.executeS(new Object[]{i+""}); } } }); /** * 多数据源操作 */ Map map=Jdbc.getDSNames();//得到除默认数据源外的所有数据源名称 List listDdb=Jdbc.find("select * from test");//读取默认数据源 List listDrdb=Jdbc.getDS(readDB).find("select * from test");//读取第二个数据源 List listDwdb=Jdbc.getDS(writeDB).find("select * from test");//读取第三个数据源 } }
下面为配制文件 lqjdbc.properties
#MYSQL_DRIVER DriverClassName=com.mysql.jdbc.Driver #MYSQL_URL AllUrl=jdbc:mysql://127.0.0.1/db4?useOldAliasMetadataBehavior=true&useUnicode=true&characterEncoding=utf-8&rewriteBatchedStatements=true***root***123456 #初始化链接数 InitialPoolSize=50 #最小链接数 MinPoolSize=20 #最大链接数 MaxPoolSize=100 #执行线程数-版本支持2.3以上版本 NumHelperThreads=20 #每页显示多少条数据 PageSize=15 #多少页一组 GroupPageSize=5 #打印日志 SqlLog=true #是否打印查询耗时-版本支持2.1.9以上版本 SqlSuccessTime=true #^^^^^^^^^^^^^^^^^^^^^^^读^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ #MYSQL_URL lqjdbc.appender.query.AllUrl=jdbc:mysql://127.0.0.1/db2?useOldAliasMetadataBehavior=true&useUnicode=true&characterEncoding=utf-8&rewriteBatchedStatements=true***root***123456 #MYSQL_DRIVER lqjdbc.appender.query.DriverClassName=com.mysql.jdbc.Driver #初始化链接数 lqjdbc.appender.query.InitialPoolSize=50 #最小链接数 lqjdbc.appender.query.MinPoolSize=20 #最大链接数 lqjdbc.appender.query.MaxPoolSize=100 #执行线程数-版本支持2.3以上版本 lqjdbc.appender.query.NumHelperThreads=20 #每页显示多少条数据 lqjdbc.appender.query.PageSize=15 #多少页一组 lqjdbc.appender.query.GroupPageSize=5 #打印日志 lqjdbc.appender.query.SqlLog=true #是否打印查询耗时-版本支持2.1.9以上版本 lqjdbc.appender.query.SqlSuccessTime=true #^^^^^^^^^^^^^^^^^^^^^^^写^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ #MYSQL_URL lqjdbc.appender.write.AllUrl=jdbc:mysql://127.0.0.1/db3?useOldAliasMetadataBehavior=true&useUnicode=true&characterEncoding=utf-8&rewriteBatchedStatements=true***root***123456 #MYSQL_DRIVER lqjdbc.appender.write.DriverClassName=com.mysql.jdbc.Driver #初始化链接数 lqjdbc.appender.write.InitialPoolSize=50 #最小链接数 lqjdbc.appender.write.MinPoolSize=20 #最大链接数 lqjdbc.appender.write.MaxPoolSize=100 #执行线程数-版本支持2.3以上版本 lqjdbc.appender.write.NumHelperThreads=20 #每页显示多少条数据 lqjdbc.appender.write.PageSize=15 #多少页一组 lqjdbc.appender.write.GroupPageSize=5 #打印日志 lqjdbc.appender.write.SqlLog=true #是否打印查询耗时-版本支持2.1.9以上版本 lqjdbc.appender.write.SqlSuccessTime=true
问题内容: 我目前在一个网站上工作,该网站必须存在于内存可用性非常低的VM上(目前被告知要达到512mb)。不幸的是,至少在不久的将来,数据库和Web应用程序必须是同一台服务器。 现在,我已经在这里通读了一些问题,并尝试进行自己的研究,但是这里有很多选择。从本质上讲,什么是可以安装的轻巧的数据库服务器?SQL或NoSQL并不重要;它不会占用大量数据库资源,但我现在不想随我现在选择的内容而受到限制。
本文向大家介绍浅谈Android轻量级的数据缓存框架RxCache,包括了浅谈Android轻量级的数据缓存框架RxCache的使用技巧和注意事项,需要的朋友参考一下 请求网络数据是在安卓开发中使用最频繁的一个功能,网络请求的体验决定了用户对整个APP的感觉,因此合理地使用缓存对网络请求的数据进行处理极为重要。合理的进行缓存和网络请求,可以为APP带来更优秀的体验。图片的缓存有Picasso、Gl
本文向大家介绍详解Android轻量型数据库SQLite,包括了详解Android轻量型数据库SQLite的使用技巧和注意事项,需要的朋友参考一下 数据库是Android存储方案的核心,在Andorid中SQLite非常轻量,而且执行sql语句甚至比MySQL还要快。 SQLiteDatabase 是 Android 中操作数据库的核心类之一,使用SQLiteDatabase可以打开数据库,也可以
主要内容:使用普通函数创建 goroutine,使用匿名函数创建goroutine在编写 Socket 网络程序时,需要提前准备一个线程池为每一个 Socket 的收发包分配一个线程。开发人员需要在线程数量和 CPU 数量间建立一个对应关系,以保证每个任务能及时地被分配到 CPU 上进行处理,同时避免多个任务频繁地在线程间切换执行而损失效率。 虽然,线程池为逻辑编写者提供了线程分配的抽象机制。但是,如果面对随时随地可能发生的并发和线程处理需求,线程池就不是非常直观和方便了。能否
Jenkins Pipeline插件有一个称为“轻量级签出”的功能,其中主服务器仅从repo中提取Jenkinsfile,而不是整个repo。配置屏幕中有一个相应的复选框。我想在多分支管道中进行轻量级签出,但我在多分支配置屏幕中没有看到复选框。有什么想法如何实现这一点吗?我注意到一些关闭的问题表明此功能可用,但我无法找到任何有关如何实现它的细节。 相关资料: https://issues.jenk
本文向大家介绍基于Python的SQL Server数据库实现对象同步轻量级,包括了基于Python的SQL Server数据库实现对象同步轻量级的使用技巧和注意事项,需要的朋友参考一下 缘由 日常工作中经常遇到类似的问题:把某个服务器上的某些指定的表同步到另外一台服务器。 类似需求用SSIS或者其他ETL工作很容易实现,比如用SSIS的话,就会会存在相当一部分反复的手工操作。 建源的数据库信息,