最新开源DBLayer,原来数据库操作可以这么简单

时间:2024-10-19 20:35:44

DBLayer,我最近开源的数据库轻量级orm框架,目前支持sqlserver、mysql、oracle, 特别做了分页的封装。

这个框架从七八年前开始逐渐升级而来,也经历了不少项目,希望可以将大家从sql字符串中解放出来。

开源地址

https://github.com/wutao0315/DBLayer

访问代码案例

var id = TheService.InsertEntity<SysLog, long>(
() => new SysLog()
{
LogId = -,
LogContentJson = "测试",
LogCreater = "测试",
LogCreateTime = DateTime.Now,
LogType = ""
});
分页操作
        /// <summary>
/// 分页查询
/// </summary>
/// <param name="condition">查询条件</param>
/// <returns></returns>
public IEnumerable<SysUser> Seach(SysUserCondition.Search condition)
{
var page = new Pager<SysUserCondition.Search>()
{
Condition = condition,
Table = "sys_user",
Key = "user_id",
Order = string.Empty,
Field = "*",
WhereAction = (Condition, Where, Paramters) =>
{
if (!string.IsNullOrEmpty(Condition.UserName))
{
Where.Append("AND user_name LIKE @user_name ");
Paramters.Add(base.CreateParameter("@user_name", string.Concat("%", Condition.UserName, "%")));
}
if (!string.IsNullOrEmpty(Condition.UserEmail))
{
Where.Append("AND user_email LIKE @user_email ");
Paramters.Add(base.CreateParameter("@user_email", string.Concat("%", Condition.UserEmail, "%")));
}
if (!string.IsNullOrEmpty(Condition.UserMobile))
{
Where.Append("AND user_mobile LIKE @user_mobile ");
Paramters.Add(base.CreateParameter("@user_mobile", string.Concat("%", Condition.UserMobile, "%")));
}
}
}; var result = base.GetResultByPager<SysUser, SysUserCondition.Search>(page);
return result;
}

推荐和spring 配合使用,具体配置代码请进入源码查看。

同时在spring 配置多个数据库连接,支持数据库连接字符串密码加密。只需要在 passwordKey加入密钥

  <object id="sql_wxius_string_server" type="DBLayer.Core.ConnectionString, DBLayer.Core" singleton="true">
<property name="Properties">
<name-values>
<add key="userid" value="sa" />
<add key="password" value="***" />
<add key="passwordKey" value="" />
<add key="database" value="wxius" />
<add key="datasource" value="." />
</name-values>
</property>
<property name="ConnectionToken" value="Password=${password};Persist Security Info=True;User ID=${userid};Initial Catalog=${database};Data Source=${datasource};pooling=true;min pool size=5;max pool size=10" />
</object>

数据库唯一标识除了可以数据自动编码,还支持在代码端自动 生成 GUID 和 时间点。下面代码是uuid,时间点并按照顺序生成的自动编号

  <object id="uuidGenerator" type="DBLayer.Persistence.UUIDGenerator, DBLayer.Persistence" singleton="true" >
<!--workerId:区域(机房): bits-->
<constructor-arg name="workerId" value=""/>
<!--regionId:机器编号: bits-->
<constructor-arg name="regionId" value=""/>
<!--twepoch:基准时间:Thu, Nov :: GMT-->
<!--(long)(DateTime.UtcNow - new DateTime(, , , , , , DateTimeKind.Utc)).TotalMilliseconds-->
<constructor-arg name="twepoch" value=""/>
</object>