jdbc快速连接mysql数据库_easy-jdbc: 一个简单、快速,支持高并发的jdbc,内含连接池,最新版本1.0.6,目前只支持MySQL数据库。...
easy-fast-jdbc一个支持高并发的jdbc链接池,体积小、速度快,目前只支持mysql特色user_id会自动映射成userId,无需as别名执行查询后会根据sql和对象自动记录映射的字段,无需重新解析字段,查询更快可多个不同数据库jdbc同时使用,互不影响访问高峰时自动增加连接数,低频时再自动释放当有连接release时,如果存在已失效的连接,框架会自动补充到初始化连接数日志详细记录返
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);
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)