easy-fast-jdbc

一个支持高并发的jdbc链接池,体积小、速度快,目前只支持mysql

特色

user_id会自动映射成userId,无需as别名

执行查询后会根据sql和对象自动记录映射的字段,无需重新解析字段,查询更快

可多个不同数据库jdbc同时使用,互不影响

访问高峰时自动增加连接数,低频时再自动释放

当有连接release时,如果存在已失效的连接,框架会自动补充到初始化连接数

日志详细记录返回的行数,列数及返回的时间和部分执行结果

ChangeLog

Discussing

交流群616698275 答案easy

MySql配置

请将mysql的wait_timeout设置尽可能小,如wait_timeout=32

max_connections=1000

jdbc.properties初始化

datasource.maxActive=16 为连接不够时,最大允许上限

easy-fast-jdbc会根据调用频率,自动增加连接

datasource.maxIdle=2 为初始化连接数

请将jdbc.properties放在src目录下,不然无法读取配置

JDBCDataSource dataSource = JDBCDataSource.getInstance();

FastSession session = FastSession.getInstence(dataSource);

Spring初始化

//Dao层

private FastSession session;

@Resource

private JDBCDataSource dataSource;

public void setDataSource(JDBCDataSource ds)

{

this.dataSource = ds;

}

public FastSession getSession()

{

if (session == null)

session = FastSession.getInstence(dataSource);

return session;

}

使用session

//查询列表

session.Query(GnqBrowseRecord.class, "select * from gnq_browse_record");

//查询单条

session.Single(GnqBrowseRecord.class, "select * from gnq_browse_record where browse_id=?", 1);

//查询单列

session.QueryList("select browse_id from gnq_browse_record");

//查询单值

session.getSingle("select browse_id from gnq_browse_record where browse_id=?", 1);

//查询键值对

session.QueryMap("select browse_id,browse_num from gnq_browse_record");

//增、删、改

GnqBrowseRecord gbr = new GnqBrowseRecord();

gbr.setUserId(1);

gbr.setTargetId(2);

gbr.setBrowseNum(1);

gbr.setBrowseTime(new Date());

gbr.setTargetType(0);

session.save(gbr); //保存对象

System.out.println("browse_id =========" + gbr.getBrowseId());

gbr.setBrowseId(gbr.getBrowseId());

session.update(gbr, false); //通过主键更新所有字段

session.updateNotNull(gbr); //通过主键更新不为NULL字段

session.delete(gbr); //通过所有不为NULL字段删除记录

//执行SQL

session.Execute("delete from gnq_browse_record where browse_id=?", 1);

//批量执行SQL

List sqls = new ArrayList<>();

sqls.add(Sql.parse("delete from gnq_browse_record where browse_id=?", 1));

sqls.add(Sql.parse("delete from gnq_browse_record where browse_id=?", 2));

session.execute(sqls, true); //在同一事务中执行

事务处理

// 批量事务处理

Connection conn = null;

try

{

//获取事务连接

conn = session.getConnection();

Object obj = session.getSingle(conn, "select browse_id from gnq_browse_record where browse_id=18");

session.Execute(conn, "delete from gnq_browse_record where browse_id=?", obj);

conn.commit();//最后事务必须提交,否则会产生未知错误

}

catch (SQLException e)

{

//回滚

JDBCDataSource.rollback(conn);

logger.error("执行事务失败", e);

}

finally

{

// 必须关闭连接

JDBCDataSource.close(conn);

}

存储过程调用方式

Map map = new HashMap();

List paramaters = new ArrayList();

paramaters.add(new ProcdureParamater(1, name));

paramaters.add(new ProcdureParamater(2, password));

paramaters.add(new ProcdureParamater(3, ip));

paramaters.add(new ProcdureParamater(4));

paramaters.add(new ProcdureParamater(5));

paramaters.add(new ProcdureParamater(6));

paramaters.add(new ProcdureParamater(7));

if (getJDBCUtils().RunProcdure("{call procManagerLogin(?,?,?,?,?,?,?)}", paramaters))

{

int errId = paramaters.get(3).getInt();

if(errId == 0)

{

map.put("userId", paramaters.get(4).getInt());

map.put("roleId", paramaters.get(5).getInt());

map.put("roleName", paramaters.get(6).getValue());

}

map.put("errId", errId);

return map;

}

map.put("errId", 999001);

return map;

DEMO

工具生成对象

下载生成工具,打开exe文件,连接-点击数据表-保存(ctrl+s)或保存全部

多数据库

多个数据库,配置两个datasource即可,例如jdbc.properties,jdbc2.properties

然后分别初始化,可同时使用

JDBCDataSource dataSource = JDBCDataSource.getInstance();

JDBCDataSource dataSource2 = JDBCDataSource.getInstance("jdbc2.properties");

FastSession session = FastSession.getInstence(dataSource);

FastSession session2 = FastSession.getInstence(dataSource2);

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐