FreeSql (二十九)Lambda 表達式

FreeSql 支持功能豐富的表達式函數解析,方便程序員在不了解數據庫函數的情況下編寫代碼。這是 FreeSql 非常特色的功能之一,深入細化函數解析盡量做到滿意,所支持的類型基本都可以使用對應的表達式函數,例如 日期、字符串、IN查詢、數組(PostgreSQL的數組)、字典(PostgreSQL HStore)等等。

IFreeSql fsql = new FreeSql.FreeSqlBuilder().UseConnectionString(FreeSql.DataType.MySql, "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;Initial Catalog=cccddd;Charset=utf8;SslMode=none;Max pool size=10").Build();[Table(Name = "tb_topic")]
class Topic {[Column(IsIdentity = true, IsPrimary = true)]public int Id { get; set; }public int Clicks { get; set; }public int TestTypeInfoGuid { get; set; }public string Title { get; set; }public DateTime CreateTime { get; set; }
}ISelect<Topic> select => fsql.Select<Topic>();

In查詢

var t1 = select.Where(a => new[] { 1, 2, 3 }.Contains(a.testFieldInt)).ToSql();
//SELECT a.`Id`, a.`Clicks`, a.`TestTypeInfoGuid`, a.`Title`, a.`CreateTime` 
//FROM `tb_topic` a 
//WHERE (a.`Id` in (1,2,3))

查找今天創建的數據

var t2 = select.Where(a => a.CreateTime.Date == DateTime.Now.Date).ToSql();

SqlServer 下隨機獲取記錄

var t3 = select.OrderBy(a => Guid.NewGuid()).Limit(1).ToSql();
//SELECT top 1 ...
//FROM [tb_topic] a 
//ORDER BY newid()

AOP攔截實現自定義解析

IFreeSql 對象有 Aop 成員,那里提供一堆 AOP 攔截的方法。其實有一個事件名稱:ParseExpression。

/// <summary>
/// 可自定義解析表達式
/// </summary>
EventHandler<AopParseExpressionEventArgs> ParseExpression { get; set; }public class AopParseExpressionEventArgs : EventArgs {public AopParseExpressionEventArgs(Expression expression, Func<Expression, string> freeParse) {this.Expression = expression;this.FreeParse = freeParse;}/// <summary>/// 內置解析功能,可輔助您進行解析/// </summary>public Func<Expression, string> FreeParse { get; }/// <summary>/// 需要您解析的表達式/// </summary>public Expression Expression { get; }/// <summary>/// 解析后的內容/// </summary>public string Result { get; set; }
}

FreeParse 是提供給外部的解析工具,它擁有 FreeSql 所有表達式功能,當您自定義解析的過程中遇到特別難處理的,可通過它快速解析出表達式的子部分內容。

表達式函數全覽

表達式MySqlSqlServerPostgreSQLOracle功能說明
a ? b : ccase when a then b else c endcase when a then b else c endcase when a then b else c endcase when a then b else c enda成立時取b值,否則取c值
a ?? bifnull(a, b)isnull(a, b)coalesce(a, b)nvl(a, b)當a為null時,取b值
數字 + 數字a + ba + ba + ba + b數字相加
數字 + 字符串concat(a, b)cast(a as varchar) + cast(b as varchar)case(a as varchar)|| ba|| b字符串相加,a或b任意一個為字符串時
a - ba - ba - ba - ba - b
a * ba * ba * ba * ba * b
a / ba / ba / ba / ba / b
a / ba div ba / ba / btrunc(a / b)整除(a,b都為整數)
a % ba % ba % ba % bmod(a,b)

等等...

數組

表達式MySqlSqlServerPostgreSQLOracle功能說明
a.Length--case when a is null then 0 else array_length(a,1) end-數組長度
常量數組.Length--array_length(array[常量數組元素逗號分割],1)-數組長度
a.Any()--case when a is null then 0 else array_length(a,1) end > 0-數組是否為空
常量數組.Contains(b)b in (常量數組元素逗號分割)b in (常量數組元素逗號分割)b in (常量數組元素逗號分割)b in (常量數組元素逗號分割)IN查詢
a.Contains(b)--a @> array[b]-a數組是否包含b元素
a.Concat(b)--a || b-數組相連
a.Count()--同 Length-數組長度

一個細節證明 FreeSql 匠心制作

通用的 in 查詢 select.Where(a => new []{ 1,2,3 }.Contains(a.xxx))

假設 xxxs 是 pgsql 的數組字段類型,其實會與上面的 in 查詢起沖突,FreeSql 解決了這個矛盾 select.Where(a => a.xxxs.Contains(1))

字典 Dictionary<string, string>

表達式MySqlSqlServerPostgreSQLOracle功能說明
a.Count--case when a is null then 0 else array_length(akeys(a),1) end-字典長度
a.Keys--akeys(a)-返回字典所有key數組
a.Values--avals(a)-返回字典所有value數組
a.Contains(b)--a @> b-字典是否包含b
a.ContainsKey(b)--a? b-字典是否包含key
a.Concat(b)--a || b-字典相連
a.Count()--同 Count-字典長度

JSON JToken/JObject/JArray

表達式MySqlSqlServerPostgreSQLOracle功能說明
a.Count--jsonb_array_length(coalesce(a, '[]))-json數組類型的長度
a.Any()--jsonb_array_length(coalesce(a, '[])) > 0-json數組類型,是否為空
a.Contains(b)--coalesce(a, '{}') @> b::jsonb-json中是否包含b
a.ContainsKey(b)--coalesce(a, '{}') ? b-json中是否包含鍵b
a.Concat(b)--coalesce(a, '{}')b::jsonb
Parse(a)--a::jsonb-轉化字符串為json類型

字符串

表達式MySqlSqlServerPostgreSQLOracleSqlite
string.Empty''''''''
string.IsNullOrEmpty(a)(a is null or a = '')(a is null or a = '')(a is null or a = '')(a is null or a = '')(a is null or a = '')
string.Concat(a,b,c...)concat(a, b, c)a + b + ca || b || ca || b || ca || b || c
a.CompareTo(b)strcmp(a, b)-case when a = b then 0 when a > b then 1 else -1 endcase when a = b then 0 when a > b then 1 else -1 endcase when a = b then 0 when a > b then 1 else -1 end
a.Contains('b')a like '%b%'a like '%b%'a ilike'%b%'a like '%b%'a like '%b%'
a.EndsWith('b')a like '%b'a like '%b'a ilike'%b'a like '%b'a like '%b'
a.IndexOf(b)locate(a, b) - 1locate(a, b) - 1strpos(a, b) - 1instr(a, b, 1, 1) - 1instr(a, b) - 1
a.Lengthchar_length(a)len(a)char_length(a)length(a)length(a)
a.PadLeft(b, c)lpad(a, b, c)-lpad(a, b, c)lpad(a, b, c)lpad(a, b, c)
a.PadRight(b, c)rpad(a, b, c)-rpad(a, b, c)rpad(a, b, c)rpad(a, b, c)
a.Replace(b, c)replace(a, b, c)replace(a, b, c)replace(a, b, c)replace(a, b, c)replace(a, b, c)
a.StartsWith('b')a like 'b%'a like 'b%'a ilike'b%'a like 'b%'a like 'b%'
a.Substring(b, c)substr(a, b, c + 1)substring(a, b, c + 1)substr(a, b, c + 1)substr(a, b, c + 1)substr(a, b, c + 1)
a.ToLowerlower(a)lower(a)lower(a)lower(a)lower(a)
a.ToUpperupper(a)upper(a)upper(a)upper(a)upper(a)
a.Trimtrim(a)trim(a)trim(a)trim(a)trim(a)
a.TrimEndrtrim(a)rtrim(a)rtrim(a)rtrim(a)rtrim(a)
a.TrimStartltrim(a)ltrim(a)ltrim(a)ltrim(a)ltrim(a)

使用字符串函數可能會出現性能瓶頸,雖然不推薦使用,但是作為功能庫這也是不可缺少的功能之一。

日期

表達式MySqlSqlServerPostgreSQLOracle
DateTime.Nownow()getdate()current_timestampsystimestamp
DateTime.UtcNowutc_timestamp()getutcdate()(current_timestamp at time zone 'UTC')sys_extract_utc(systimestamp)
DateTime.Todaycurdateconvert(char(10),getdate(),120)current_datetrunc(systimestamp)
DateTime.MaxValuecast('9999/12/31 23:59:59' as datetime)'9999/12/31 23:59:59''9999/12/31 23:59:59'::timestampto_timestamp('9999-12-31 23:59:59','YYYY-MM-DD HH24:MI:SS.FF6')
DateTime.MinValuecast('0001/1/1 0:00:00' as datetime)'1753/1/1 0:00:00''0001/1/1 0:00:00'::timestampto_timestamp('0001-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS.FF6')
DateTime.Compare(a, b)a - ba - bextract(epoch from a::timestamp-b::timestamp)extract(day from (a-b))
DateTime.DaysInMonth(a, b)dayofmonth(last_day(concat(a, '-', b, '-1')))datepart(day, dateadd(day, -1, dateadd(month, 1, cast(a as varchar) + '-' + cast(b as varchar) + '-1')))extract(day from (a
DateTime.Equals(a, b)a = ba = ba = ba = b
DateTime.IsLeapYear(a)a%4=0 and a%100<>0 or a%400=0a%4=0 and a%100<>0 or a%400=0a%4=0 and a%100<>0 or a%400=0mod(a,4)=0 AND mod(a,100)<>0 OR mod(a,400)=0
DateTime.Parse(a)cast(a as datetime)cast(a as datetime)a::timestampto_timestamp(a,'YYYY-MM-DD HH24:MI:SS.FF6')
a.Add(b)date_add(a, interval b microsecond)dateadd(millisecond, b / 1000, a)a::timestamp+(b
a.AddDays(b)date_add(a, interval b day)dateadd(day, b, a)a::timestamp+(b
a.AddHours(b)date_add(a, interval b hour)dateadd(hour, b, a)a::timestamp+(b
a.AddMilliseconds(b)date_add(a, interval b*1000 microsecond)dateadd(millisecond, b, a)a::timestamp+(b
a.AddMinutes(b)date_add(a, interval b minute)dateadd(minute, b, a)a::timestamp+(b
a.AddMonths(b)date_add(a, interval b month)dateadd(month, b, a)a::timestamp+(b
a.AddSeconds(b)date_add(a, interval b second)dateadd(second, b, a)a::timestamp+(b
a.AddTicks(b)date_add(a, interval b/10 microsecond)dateadd(millisecond, b / 10000, a)a::timestamp+(b
a.AddYears(b)date_add(a, interval b year)dateadd(year, b, a)a::timestamp+(b
a.Datecast(date_format(a, '%Y-%m-%d') as datetime)convert(char(10),a,120)a::datetrunc(a)
a.Daydayofmonth(a)datepart(day, a)extract(day from a::timestamp)cast(to_char(a,'DD') as number)
a.DayOfWeekdayofweek(a)datepart(weekday, a) - 1extract(dow from a::timestamp)case when to_char(a)='7' then 0 else cast(to_char(a) as number) end
a.DayOfYeardayofyear(a)datepart(dayofyear, a)extract(doy from a::timestamp)cast(to_char(a,'DDD') as number)
a.Hourhour(a)datepart(hour, a)extract(hour from a::timestamp)cast(to_char(a,'HH24') as number)
a.Millisecondfloor(microsecond(a) / 1000)datepart(millisecond, a)extract(milliseconds from a::timestamp)-extract(second from a::timestamp)*1000cast(to_char(a,'FF3') as number)
a.Minuteminute(a)datepart(minute, a)extract(minute from a::timestamp)cast(to_char(a,'MI') as number)
a.Monthmonth(a)datepart(month, a)extract(month from a::timestamp)cast(to_char(a,'FF3') as number)
a.Secondsecond(a)datepart(second, a)extract(second from a::timestamp)cast(to_char(a,'SS') as number)
a.Subtract(b)timestampdiff(microsecond, b, a)datediff(millisecond, b, a) * 1000(extract(epoch from a::timestamp-b::timestamp)*1000000)a - b
a.Tickstimestampdiff(microsecond, '0001-1-1', a) * 10datediff(millisecond, '1970-1-1', a) * 10000 + 621355968000000000extract(epoch from a::timestamp)*10000000+621355968000000000cast(to_char(a,'FF7') as number)
a.TimeOfDaytimestampdiff(microsecond, date_format(a, '%Y-%m-%d'), a)'1970-1-1 ' + convert(varchar, a, 14)extract(epoch from a::time)*1000000a - trunc(a)
a.Yearyear(a)datepart(year, a)extract(year from a::timestamp)
a.Equals(b)a = ba = ba = ba = b
a.CompareTo(b)a - ba - ba - ba - b
a.ToString()date_format(a, '%Y-%m-%d %H:%i:%s.%f')convert(varchar, a, 121)to_char(a, 'YYYY-MM-DD HH24:MI:SS.US')to_char(a,'YYYY-MM-DD HH24:MI:SS.FF6')

時間

表達式MySql(微秒)SqlServer(秒)PostgreSQL(微秒)Oracle(Interval day(9) to second(7))
TimeSpan.Zero00-0微秒
TimeSpan.MaxValue922337203685477580922337203685477580-numtodsinterval(233720368.5477580,'second')
TimeSpan.MinValue-922337203685477580-922337203685477580-numtodsinterval(-233720368.5477580,'second')
TimeSpan.Compare(a, b)a - ba - b-extract(day from (a-b))
TimeSpan.Equals(a, b)a = ba = b-a = b
TimeSpan.FromDays(a)a * 1000000 * 60 * 60 * 24a * 1000000 * 60 * 60 * 24-numtodsinterval(a*86400,'second')
TimeSpan.FromHours(a)a * 1000000 * 60 * 60a * 1000000 * 60 * 60-numtodsinterval(a*3600,'second')
TimeSpan.FromMilliseconds(a)a * 1000a * 1000-numtodsinterval(a/1000,'second')
TimeSpan.FromMinutes(a)a * 1000000 * 60a * 1000000 * 60-numtodsinterval(a*60,'second')
TimeSpan.FromSeconds(a)a * 1000000a * 1000000-numtodsinterval(a,'second')
TimeSpan.FromTicks(a)a / 10a / 10-numtodsinterval(a/10000000,'second')
a.Add(b)a + ba + b-a + b
a.Subtract(b)a - ba - b-a - b
a.CompareTo(b)a - ba - b-extract(day from (a-b))
a.Daysa div (1000000 * 60 * 60 * 24)a div (1000000 * 60 * 60 * 24)-extract(day from a)
a.Hoursa div (1000000 * 60 * 60) mod 24a div (1000000 * 60 * 60) mod 24-extract(hour from a)
a.Millisecondsa div 1000 mod 1000a div 1000 mod 1000-cast(substr(extract(second from a)-floor(extract(second from a)),2,3) as number)
a.Secondsa div 1000000 mod 60a div 1000000 mod 60-extract(second from a)
a.Ticksa * 10a * 10-(extract(day from a)86400+extract(hour from a)3600+extract(minute from a)60+extract(second from a))10000000
a.TotalDaysa / (1000000 * 60 * 60 * 24)a / (1000000 * 60 * 60 * 24)-extract(day from a)
a.TotalHoursa / (1000000 * 60 * 60)a / (1000000 * 60 * 60)-(extract(day from a)*24+extract(hour from a))
a.TotalMillisecondsa / 1000a / 1000-(extract(day from a)86400+extract(hour from a)3600+extract(minute from a)60+extract(second from a))1000
a.TotalMinutesa / (1000000 * 60)a / (1000000 * 60)-
a.TotalSecondsa / 1000000a / 1000000-(extract(day from a)86400+extract(hour from a)3600+extract(minute from a)*60+extract(second from a))
a.Equals(b)a = ba = b-a = b
a.ToString()cast(a as varchar)cast(a as varchar)-to_char(a)

數學函數

表達式MySqlSqlServerPostgreSQLOracle
Math.Abs(a)abs(a)abs(a)abs(a)
Math.Acos(a)acos(a)acos(a)acos(a)acos(a)
Math.Asin(a)asin(a)asin(a)asin(a)asin(a)
Math.Atan(a)atan(a)atan(a)atan(a)atan(a)
Math.Atan2(a, b)atan2(a, b)atan2(a, b)atan2(a, b)-
Math.Ceiling(a)ceiling(a)ceiling(a)ceiling(a)ceil(a)
Math.Cos(a)cos(a)cos(a)cos(a)cos(a)
Math.Exp(a)exp(a)exp(a)exp(a)exp(a)
Math.Floor(a)floor(a)floor(a)floor(a)floor(a)
Math.Log(a)log(a)log(a)log(a)log(e,a)
Math.Log10(a)log10(a)log10(a)log10(a)log(10,a)
Math.PI(a)3.14159265358979313.14159265358979313.14159265358979313.1415926535897931
Math.Pow(a, b)pow(a, b)power(a, b)pow(a, b)power(a, b)
Math.Round(a, b)round(a, b)round(a, b)round(a, b)round(a, b)
Math.Sign(a)sign(a)sign(a)sign(a)sign(a)
Math.Sin(a)sin(a)sin(a)sin(a)sin(a)
Math.Sqrt(a)sqrt(a)sqrt(a)sqrt(a)sqrt(a)
Math.Tan(a)tan(a)tan(a)tan(a)tan(a)
Math.Truncate(a)truncate(a, 0)floor(a)trunc(a, 0)trunc(a, 0)

類型轉換

表達式MySqlSqlServerPostgreSQLOracleSqlite
Convert.ToBoolean(a) | bool.Parse(a)a not in ('0','false')a not in ('0','false')a::varchar not in ('0','false','f','no')-a not in ('0','false')
Convert.ToByte(a) | byte.Parse(a)cast(a as unsigned)cast(a as tinyint)a::int2cast(a as number)cast(a as int2)
Convert.ToChar(a)substr(cast(a as char),1,1)substring(cast(a as nvarchar),1,1)substr(a::char,1,1)substr(to_char(a),1,1)substr(cast(a as character),1,1)
Convert.ToDateTime(a) | DateTime.Parse(a)cast(a as datetime)cast(a as datetime)a::timestampto_timestamp(a,'YYYY-MM-DD HH24:MI:SS.FF6')datetime(a)
Convert.ToDecimal(a) | decimal.Parse(a)cast(a as decimal(36,18))cast(a as decimal(36,19))a::numericcast(a as number)cast(a as decimal(36,18))
Convert.ToDouble(a) | double.Parse(a)cast(a as decimal(32,16))cast(a as decimal(32,16))a::float8cast(a as number)cast(a as double)
Convert.ToInt16(a) | short.Parse(a)cast(a as signed)cast(a as smallint)a::int2cast(a as number)cast(a as smallint)
Convert.ToInt32(a) | int.Parse(a)cast(a as signed)cast(a as int)a::int4cast(a as number)cast(a as smallint)
Convert.ToInt64(a) | long.Parse(a)cast(a as signed)cast(a as bigint)a::int8cast(a as number)cast(a as smallint)
Convert.ToSByte(a) | sbyte.Parse(a)cast(a as signed)cast(a as tinyint)a::int2cast(a as number)cast(a as smallint)
Convert.ToString(a)cast(a as decimal(14,7))cast(a as decimal(14,7))a::float4to_char(a)cast(a as character)
Convert.ToSingle(a) | float.Parse(a)cast(a as char)cast(a as nvarchar)a::varcharcast(a as number)cast(a as smallint)
Convert.ToUInt16(a) | ushort.Parse(a)cast(a as unsigned)cast(a as smallint)a::int2cast(a as number)cast(a as unsigned)
Convert.ToUInt32(a) | uint.Parse(a)cast(a as unsigned)cast(a as int)a::int4cast(a as number)cast(a as decimal(10,0))
Convert.ToUInt64(a) | ulong.Parse(a)cast(a as unsigned)cast(a as bigint)a::int8cast(a as number)cast(a as decimal(21,0))
Guid.Parse(a)substr(cast(a as char),1,36)cast(a as uniqueidentifier)a::uuidsubstr(to_char(a),1,36)substr(cast(a as character),1,36)
Guid.NewGuid()-newid()---
new Random().NextDouble()rand()rand()random()dbms_random.valuerandom()

系列文章導航

  • (一)入門

  • (二)自動遷移實體

  • (三)實體特性

  • (四)實體特性 Fluent Api

  • (五)插入數據

  • (六)批量插入數據

  • (七)插入數據時忽略列

  • (八)插入數據時指定列

  • (九)刪除數據

  • (十)更新數據

  • (十一)更新數據 Where

  • (十二)更新數據時指定列

  • (十三)更新數據時忽略列

  • (十四)批量更新數據

  • (十五)查詢數據

  • (十六)分頁查詢

  • (十七)聯表查詢

  • (十八)導航屬性

  • (十九)多表查詢

  • (二十)多表查詢 WhereCascade

  • (二十一)查詢返回數據

  • (二十二)Dto 映射查詢

  • (二十三)分組、聚合

  • (二十四)Linq To Sql 語法使用介紹

  • (二十五)延時加載

  • (二十六)貪婪加載 Include、IncludeMany、Dto、ToList

  • (二十七)將已寫好的 SQL 語句,與實體類映射進行二次查詢

  • (二十八)事務

  • (二十九)Lambda 表達式

  • (三十)讀寫分離

  • (三十一)分區分表

  • (三十二)Aop

  • (三十三)CodeFirst 類型映射

  • (三十四)CodeFirst 遷移說明

  • (三十五)CodeFirst 自定義特性

轉載于:https://www.cnblogs.com/FreeSql/p/11531425.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/447722.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/447722.shtml
英文地址,請注明出處:http://en.pswp.cn/news/447722.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring注解 @Qualifier 說明、用法

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 -------------------------------------------- 我是分隔線 --------------------------------------------------- Qualifier&#xf…

科目三中模擬燈光使用考試常見的錯誤 廣州學車網光大國際駕校學車

夜間駕駛雖是 駕照考試中抽選的內容&#xff0c;但科目三中模擬燈光使用考試&#xff0c;還是要了解一下的。以下列出了考試中常見的錯誤。 1.前照燈非遠光狀態&#xff0c;聽到“請將前照燈變換成遠光”指令&#xff0c;不變換或變換錯誤的或者前照燈在遠光狀態下&#xff0c;…

FreeSql (三十)讀寫分離

FreeSql 支持數據庫讀寫分離&#xff0c;本功能是客戶端的讀寫分離行為&#xff0c;數據庫服務器該怎么配置仍然那樣配置&#xff0c;不受本功能影響&#xff0c;為了方便描術后面講到的【讀寫分離】都是指客戶端的功能支持。 各種數據庫的讀寫方案不一&#xff0c;數據庫端開啟…

把 excel 表中的數據 批量修改到指定數據庫表中、根據 excel 表中數據修改數據庫表中數據

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 收到一張 excel 表&#xff0c;要求根據 “轉賬時間”一列的值批量修改數據庫表中 "放款時間"一列的值。 2. 寫出 sql 模…

科?目?三?智?能?考?試?系?統?實?際?道?路?考?試?項?目?評?判?標?準

科目三智能考試系統是將公安部實際道路考試項目評判標準加以量化&#xff0c;重點考學員的駕駛技能、安全意識及文明駕車的理念&#xff0c;并將其融入 各個考試項目之中。 二考試技術指標 1、上車準備 考試開始后&#xff0c;學員應當根據考試員發出的“上車準備”指令后…

FreeSql (三十一)分區分表

分區 分區就是把一個數據表的文件和索引分散存儲在不同的物理文件中。把一張表的數據分成N多個區塊&#xff0c;這些區塊可以在同一個磁盤上&#xff0c;也可以在不同的磁盤上&#xff0c;數據庫不同實現方式有所不同。 與分表不同&#xff0c;一張大表進行分區后&#xff0c;他…

FreeSql (三十二)Aop

FreeSql AOP 已有的功能介紹&#xff0c;未來為會根據用戶需求不斷增強。 審計 CRUD 馬云說過&#xff0c;996是修福報。對于多數程序員來說&#xff0c;加班是好事。。。起碼不是閑人&#xff0c;不會下崗。 當如果因為某個 sql 騷操作耗時很高&#xff0c;沒有一個相關的審計…

SpringMvc 注解 @InitBinder 表單多對象精準綁定接收

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 InitBinder用于在Controller中標注于方法&#xff0c;表示為當前控制器注冊一個屬性編輯器或者其他&#xff0c;只對當前的Controller有…

2014年科目三智能化考試十大必知事項

一、模擬夜考燈光使用 1&#xff0c;夜間通過急轉彎/坡道/拱橋/人行橫道/或沒有交通信號燈控制的路口&#xff1b; 燈光使用&#xff1a;交替使用遠近光(變光2次以上) 2&#xff0c;夜間在窄路窄橋與非機動車會車 燈光使用&#xff1a;近光燈 3&#xff0c;夜間在道路上發生故障…

SpringMVC注解 @initbinder 解決類型轉換問題

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 使用 SpringMVC 時&#xff0c;常遇到表單中日期字符串和 JavaBean 的 Date 類型的轉換&#xff0c;而 SpringMVC 默認不支持這個格式的…

看了就徹底明白人生!!!

出生一張紙&#xff0c;開始一輩子&#xff1b; 畢業一張紙&#xff0c;奮斗一輩子&#xff1b; 婚姻一張紙&#xff0c;折磨一輩子&#xff1b; 做官一張紙&#xff0c;斗爭一輩子&#xff1b; 金錢一張紙&#xff0c;辛苦一輩子&#xff1b; 榮譽一張紙&#xff0c;虛名一輩子…

FreeSql (三十三)CodeFirst 類型映射

前面有介紹過幾篇 CodeFirst 內容文章&#xff0c;有 《&#xff08;二&#xff09;自動遷移實體》(https://www.cnblogs.com/FreeSql/p/11531301.html)《&#xff08;三&#xff09;實體特性》(https://www.cnblogs.com/FreeSql/p/11531302.html)《&#xff08;四&#xff09;…

FreeSql (三十四)CodeFirst 遷移說明

FreeSql 支持 CodeFirst 遷移結構至數據庫&#xff0c;這應該是(O/RM)必須標配的一個功能。 與其他(O/RM)不同FreeSql支持更多的數據庫特性&#xff0c;而不只是支持基礎的數據類型&#xff0c;這既是優點也是缺點&#xff0c;優點是充分利用數據庫特性輔助開發&#xff0c;缺點…

曾國藩家訓:三個地方看一個家庭的興敗

第一看&#xff1a;看子孫睡到幾點&#xff0c;假如睡到太陽都已經升得很高的時候才起來&#xff0c;那代表這個家族會慢慢懈怠下來;第二看&#xff1a;看子孫有沒有做家務&#xff0c;因為勤勞、勞動的習慣影響一個人一輩子;第三看&#xff1a;看后代子孫有沒有在讀圣賢的經典…

Linux 查看文件指定行數 內容

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1、tail date.log 輸出文件末尾的內容&#xff0c;默認10行 tail -20 date.log 輸出最后20行的內容 tail -n -20…

FreeSql (三十五)CodeFirst 自定義特性

比如項目內已經使用了其它 orm&#xff0c;如 efcore&#xff0c;這樣意味著實體中可能存在 [Key]&#xff0c;但它與 FreeSql [Column(IsPrimary true] 不同。 Q&#xff1a; FreeSql 實體特性為啥這么別扭&#xff1f; A&#xff1a; 為了考慮一致性用法&#xff0c;全部封裝…

相隨心轉,枯榮立現

宋朝時&#xff0c;有高孝標和高孝積兩個雙胞胎兄弟&#xff0c;舉止言談和才思穎悟都象同一人。十六歲時&#xff0c;他們一齊考上秀才。婚后&#xff0c;父母為使媳婦能辨認丈夫&#xff0c;命令他們穿著不同衣裳和鞋子&#xff0c;以便辨認。有一天&#xff0c;他們遇到陳希…

查看 linux 硬件信息:內存、分區、系統、環境變量、防火墻、路由、端口監聽、進程、CPU...

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 一、linux CPU大小&#xff1b; 其實應該通過Physical Processor ID來區分單核和雙核。而Physical Processor ID可以從cpuinfo或者dmesg…

成功人士高效率的工作法

現在的人總是忙個不停&#xff0c;尤其企業家或高階主管大多身兼數職&#xff0c;為了達成工作目標&#xff0c;不得不經常加班。加上現在社交媒體和各種電子產品的誘惑讓時間更加不夠用了。每天察看郵件并即時回覆并不代表工作效率。如何排除干擾、克服惰性和避免超時工作才是…

R語言 線性回歸分析實例

y,X1,X2,X3 分別表示第 t 年各項稅收收入(億元)&#xff0c;某國生產總值GDP(億元)&#xff0c;財政支出(億元)和商品零售價格指數(%). (1) 建立線性模型&#xff1a; ① 自己編寫函數&#xff1a; > library(openxlsx) > data read.xlsx("22_data.xlsx",shee…