# easy-jdbc
**Repository Path**: andy521/easy-jdbc
## Basic Information
- **Project Name**: easy-jdbc
- **Description**: 一个简单、快速,支持高并发的jdbc,内含连接池,最新版本1.0.7beta,目前只支持MySQL数据库。
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 18
- **Created**: 2017-08-29
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# easy-fast-jdbc
一个支持高并发的jdbc链接池,体积小、速度快,目前只支持mysql
### 特色
* user_id会自动映射成userId,无需as别名
* 执行查询后会根据sql和对象自动记录映射的字段,无需重新解析字段,查询更快
* 根据project.entities配置,自动装载Entity对象
* 可多个不同数据库jdbc同时使用,互不影响
* 访问高峰时自动增加连接数,低频时再自动释放
* 当有连接release时,如果存在已失效的连接,框架会自动补充到初始化连接数
* 日志详细记录返回的行数,列数及返回的时间和部分执行结果
### 运行环境
* JDK(1.7+)
* mysql-connector-java(5.1.25+)
### ChangeLog
点击查看更新日志
### Discussing
* 提交issue
* 交流群616698275 答案easy
* email:441430565@qq.com
### MySql配置
请将mysql的wait_timeout设置尽可能小,如wait_timeout=32
max_connections=1000
### jdbc.properties初始化
datasource.maxActive=16 为连接不够时,最大允许上限
easy-fast-jdbc会根据调用频率,自动增加连接
datasource.maxIdle=2 为初始化连接数
project.entities=com.test.entity.* 为包下所有类
project.entities=com.test.entity.a,com.test.entity.b 为a和b两个类
请将jdbc.properties放在src目录下,不然无法读取配置
JDBCDataSource dataSource = JDBCDataSource.getInstance(); FastSession session = FastSession.getInstence(dataSource);### Spring初始化 ```xml
//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### DEMO * 直接使用的demo在test包下 * https://gitee.com/yydf/easystruts-xjcy/blob/master/demo.zip [Dao层] ### 工具生成对象 下载生成工具,打开exe文件,连接-点击数据表-保存(ctrl+s)或保存全部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;
JDBCDataSource dataSource = JDBCDataSource.getInstance();
JDBCDataSource dataSource2 = JDBCDataSource.getInstance("jdbc2.properties");
FastSession session = FastSession.getInstence(dataSource);
FastSession session2 = FastSession.getInstence(dataSource2);