IBATIS常用的16种SQL语句写法

合集下载

IBATIS常用的16种SQL语句写法

IBATIS常用的16种SQL语句写法

accessTimestamp &lt;= #value# </delete>
2. 将特殊字符放在 xml 的 CDATA 区内:
Xml 代码 1. <delete id="com.fashionfree.stat.accesslog.deleteMemberAccessLogsBefore" paramete rClass="long"> 2. 3. 4. 5. 6. 7. 8. <![CDATA[ delete from MemberAccessLog where accessTimestamp <= #value# ]]> </delete>
Xml 代码 1. <select id="com.fashionfree.stat.accesslog.selectSumDistinctCountOfAccessMemberN um" 2. parameterClass="hashMap" resultClass="int">
3. 4. 5. 6. 7. 8. 9.
32. <isNotNull property="startIndex"> 33. <isNotNull property="pageSize"> 34. limit #startIndex# , #pageSize# 35. </isNotNull> 36. </isNotNull> 37. </dynamic> 38. </sql>
10. </iterate> 11. </dynamic> 12. order by 13. moduleId 14. </select>

mybatis sql语法

mybatis sql语法

MyBatis SQL语法介绍MyBatis是一个开源的持久层框架,它简化了数据库操作的编写过程,提供了强大的SQL映射功能。

本文将深入探讨MyBatis的SQL语法,包括常见的CRUD操作、动态SQL、参数绑定、结果映射等。

基本CRUD操作查询MyBatis的SQL语法使用了类似于XML的语法来编写SQL语句。

下面是一个简单的查询示例:<select id="selectUserById" resultType="er">SELECT * FROM user WHERE id = #{id}</select>•select标签用于定义查询语句。

•id属性为查询语句的唯一标识。

•resultType属性指定查询结果的类型。

•#{id}是参数占位符,会被实际的参数值替换。

插入插入操作使用insert标签,示例如下:<insert id="insertUser" parameterType="er">INSERT INTO user (id, name, age) VALUES (#{id}, #{name}, #{age})</insert>•parameterType属性指定插入语句的参数类型。

更新更新操作使用update标签,示例如下:<update id="updateUser" parameterType="er">UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}</update>删除删除操作使用delete标签,示例如下:<delete id="deleteUser" parameterType="int">DELETE FROM user WHERE id = #{id}</delete>动态SQLMyBatis提供了强大的动态SQL功能,可以根据条件来动态构建SQL语句。

SQL命令和经常使用语句大全【经典】

SQL命令和经常使用语句大全【经典】

SQL命令和经常使用语句大全【经典】学习SQL应明白的动态SQL语句大体语法1 、一般SQL语句能够用Exec执行eg: Select * from tableNameExec('select * from tableName')Exec sp_executesql N'select * from tableName' -- 请注意字符串前必然要加N2、字段名,表名,数据库名之类作为变量时,必需用动态SQLeg:declare @fname varchar(20)set @fname = 'FiledName'Select @fname from tableName -- 错误,可不能提示错误,但结果为固定值FiledName,并非所要。

Exec('select ' + @fname + ' from tableName') -- 请注意加号前后的单引号的边上加空格固然将字符串改成变量的形式也可declare @fname varchar(20)set @fname = 'FiledName' --设置字段名declare @s varchar(1000)set @s = 'select ' + @fname + ' from tableName'Exec(@s) -- 成功exec sp_executesql @s -- 此句会报错declare @s Nvarchar(1000) -- 注意此处改成nvarchar(1000) set @s = 'select ' + @fname + ' from tableName'Exec(@s) -- 成功exec sp_executesql @s -- 此句正确3、输出参数declare @num int,@sqls nvarchar(4000)set @sqls='select count(*) from tableName'exec(@sqls)--如何将exec执行结果放入变量中?declare @num int,@sqls nvarchar(4000)set @sqls='select @a=count(*) from tableName 'exec sp_executesql @sqls,N'@a int output',@num output select @num另外,若是想要在SQL语句字符串中利用单引号'' 能够利用''''--语句功能--数据操作SELECT --从数据库表中检索数据行和列INSERT --向数据库表添加新数据行DELETE --从数据库表中删除数据行UPDATE --更新数据库表中的数据--数据概念CREATE TABLE --创建一个数据库表DROP TABLE --从数据库中删除表ALTER TABLE --修改数据库表结构CREATE VIEW --创建一个视图DROP VIEW --从数据库中删除视图CREATE INDEX --为数据库表创建一个索引DROP INDEX --从数据库中删除索引CREATE PROCEDURE --创建一个存储进程DROP PROCEDURE --从数据库中删除存储进程CREATE TRIGGER --创建一个触发器DROP TRIGGER --从数据库中删除触发器CREATE SCHEMA --向数据库添加一个新模式DROP SCHEMA --从数据库中删除一个模式CREATE DOMAIN --创建一个数据值域ALTER DOMAIN --改变域概念DROP DOMAIN --从数据库中删除一个域--数据操纵GRANT --授予用户访问权限DENY --拒绝用户访问REVOKE --解除用户访问权限--事务操纵COMMIT --终止当前事务ROLLBACK --中止当前事务SET TRANSACTION --概念当前事务数据访问特点--程序化SQLDECLARE --为查询设定游标EXPLAN --为查询描述数据访问打算OPEN --检索查询结果打开一个游标FETCH --检索一行查询结果CLOSE --关闭游标PREPARE --为动态执行预备SQL 语句EXECUTE --动态地执行SQL 语句DESCRIBE --描述预备好的查询---局部变量declare @id char(10)--set @id = '10010001'select @id = '10010001'---全局变量---必需以@@开头--IF ELSEdeclare @x int @y int @z int select @x = 1 @y = 2 @z=3 if @x > @yprint 'x > y' --打印字符串'x > y' else if @y > @zprint 'y > z'else print 'z > y'--CASEuse panguupdate employeeset e_wage =casewhen job_level = ’1’ then e_wage*1.08 when job_level = ’2’ then e_wage*1.07 when job_level = ’3’ then e_wage*1.06 else e_wage*1.05end--WHILE CONTINUE BREAKdeclare @x int @y int @c intselect @x = 1 @y=1 while @x < 3beginprint @x --打印变量x 的值while @y < 3beginselect @c = 100*@x + @y print @c --打印变量c 的值select @y = @y + 1endselect @x = @x + 1 select @y = 1end--WAITFOR--例等待1 小时2 分零3 秒后才执行SELECT 语句waitfor delay ’01:02:03’select * from employee--例等到晚上11 点零8 分后才执行SELECT 语句waitfor time ’23:08:00’select * from employee***SELECT***select *(列名) from table_name(表名) where column_name operator value ex:(宿主)select * from stock_information where stockid = str(nid)stockname = 'str_name'stockname like '% find this %'stockname like '[a-zA-Z]%' --------- ([]指定值的范围)stockname like '[^F-M]%' --------- (^排除指定范围)--------- 只能在利用like关键字的where子句中利用通配符)or stockpath = 'stock_path'or stocknumber < 1000and stockindex = 24not stock*** = 'man'stocknumber between 20 and 100stocknumber in(10,20,30)order by stockid desc(asc) --------- 排序,desc-降序,asc-升序order by 1,2 --------- by列号stockname = (select stockname from stock_information where stockid = 4)--------- 子查询--------- 除非能确保内层select只返回一个行的值,--------- 不然应在外层where子句顶用一个in限定符select distinct column_name form table_name --------- distinct指定检索特有的列值,不重复select stocknumber ,"stocknumber + 10" = stocknumber + 10 from table_ nameselect stockname , "stocknumber" = count(*) from table_name group by s tockname--------- group by 将表按行分组,指定列中有相同的值having count(*) = 2 --------- having选定指定的组select *from table1, table2where table1.id *= table2.id -------- 左外部连接,table1中有的而table2中没有得以null表示table1.id =* table2.id -------- 右外部连接select stockname from table1union [all] ----- union归并查询结果集,all-保留重复行select stockname from table2***insert***insert into table_name (Stock_name,Stock_number) value ("xxx","xxxx") value (select Stockname , Stocknumber from Stock_table2)---value为select 语句***update***update table_name set Stockname = "xxx" [where Stockid = 3] Stockname = defaultStockname = nullStocknumber = Stockname + 4***delete***delete from table_name where Stockid = 3truncate table_name ----------- 删除表中所有行,仍维持表的完整性drop table table_name --------------- 完全删除表***alter table*** --- 修改数据库表结构alter table database.owner.table_name add column_name char(2) null ..... sp_help table_name ---- 显示表已有特点create table table_name (name char(20), age smallint, lname varchar(30)) insert into table_name select ......... ----- 实现删除列的方式(创建新表)alter table table_name drop constraint Stockname_default ---- 删除Stockna me的default约束***function(/*经常使用函数*/)***----统计函数----AVG --求平均值COUNT --统计数量MAX --求最大值MIN --求最小值SUM --求和--AVGuse panguselect avg(e_wage) as dept_avgWage from employeegroup by dept_id--MAX--求工资最高的员工姓名use panguselect e_namefrom employeewhere e_wage =(select max(e_wage)from employee)--STDEV()--STDEV()函数返回表达式中所有数据的标准差--STDEVP()--STDEVP()函数返回整体标准差--VAR()--VAR()函数返回表达式中所有值的统计变异数--VARP()--VARP()函数返回整体变异数----算术函数----/***三角函数***/SIN(float_expression) --返回以弧度表示的角的正弦COS(float_expression) --返回以弧度表示的角的余弦TAN(float_expression) --返回以弧度表示的角的正切COT(float_expression) --返回以弧度表示的角的余切ASIN(float_expression) --返回正弦是FLOAT 值的以弧度表示的角ACOS(float_expression) --返回余弦是FLOAT 值的以弧度表示的角ATAN(float_expression) --返回正切是FLOAT 值的以弧度表示的角ATAN2(float_expression1,float_expression2)--返回正切是float_expression1 /float_expres-sion2的以弧度表示的角DEGREES(numeric_expression)--把弧度转换为角度返回与表达式相同的数据类型可为--INTEGER/MONEY/REAL/FLOAT 类型RADIANS(numeric_expression) --把角度转换为弧度返回与表达式相同的数据类型可为--INTEGER/MONEY/REAL/FLOAT 类型EXP(float_expression) --返回表达式的指数值LOG(float_expression) --返回表达式的自然对数值LOG10(float_expression)--返回表达式的以10 为底的对数值SQRT(float_expression) --返回表达式的平方根CEILING(numeric_expression) --返回>=表达式的最小整数返回的数据类型与表达式相同可为--INTEGER/MONEY/REAL/FLOAT 类型FLOOR(numeric_expression) --返回<=表达式的最小整数返回的数据类型与表达式相同可为--INTEGER/MONEY/REAL/FLOAT 类型ROUND(numeric_expression) --返回以integer_expression 为精度的四舍五入值返回的数据--类型与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型ABS(numeric_expression) --返回表达式的绝对值返回的数据类型与表达式相同可为--INTEGER/MONEY/REAL/FLOAT 类型SIGN(numeric_expression) --测试参数的正负号返回0 零值1 正数或-1 负数返回的数据类型--与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型PI() --返回值为π 即3.1415926535897936RAND([integer_expression]) --用任选的[integer_expression]做种子值得出0-1 间的随机浮点数----字符串函数----ASCII() --函数返回字符表达式最左端字符的ASCII 码值CHAR() --函数用于将ASCII 码转换为字符--若是没有输入0 ~ 255 之间的ASCII 码值CHAR 函数会返回一个NULL 值LOWER() --函数把字符串全数转换为小写UPPER() --函数把字符串全数转换为大写STR() --函数把数值型数据转换为字符型数据LTRIM() --函数把字符串头部的空格去掉RTRIM() --函数把字符串尾部的空格去掉LEFT(),RIGHT(),SUBSTRING() --函数返回部份字符串CHARINDEX(),PATINDEX() --函数返回字符串中某个指定的子串显现的开始位置SOUNDEX() --函数返回一个四位字符码--SOUNDEX函数可用来查找声音相似的字符串但SOUNDEX函数对数字和汉字均只返回0 值DIFFERENCE() --函数返回由SOUNDEX 函数返回的两个字符表达式的值的不同--0 两个SOUNDEX 函数返回值的第一个字符不同--1 两个SOUNDEX 函数返回值的第一个字符相同--2 两个SOUNDEX 函数返回值的第一二个字符相同--3 两个SOUNDEX 函数返回值的第一二三个字符相同--4 两个SOUNDEX 函数返回值完全相同QUOTENAME() --函数返回被特定字符括起来的字符串/*select quotename('abc', '{') quotename('abc')运行结果如下----------------------------------{{abc} [abc]*/REPLICATE() --函数返回一个重复character_expression 指定次数的字符串/*select replicate('abc', 3) replicate( 'abc', -2)运行结果如下----------- -----------abcabcabc NULL*/REVERSE() --函数将指定的字符串的字符排列顺序倒置REPLACE() --函数返回被替换了指定子串的字符串/*select replace('abc123g', '123', 'def')运行结果如下----------- -----------abcdefg*/SPACE() --函数返回一个有指定长度的空白字符串STUFF() --函数用另一子串替换字符串指定位置长度的子串----数据类型转换函数----CAST() 函数语法如下CAST() (<expression> AS <data_ type>[ length ]) CONVERT() 函数语法如下CONVERT() (<data_ type>[ length ], <expression> [, style])select cast(100+99 as char) convert(varchar(12), getdate()) 运行结果如下------------------------------ ------------199 Jan 15 2000----日期函数----DAY() --函数返回date_expression 中的日期值MONTH() --函数返回date_expression 中的月份值YEAR() --函数返回date_expression 中的年份值DATEADD(<datepart> ,<number> ,<date>)--函数返回指定日期date 加上指定的额外日期距离number 产生的新日期DATEDIFF(<datepart> ,<number> ,<date>)--函数返回两个指定日期在datepart 方面的不同的地方DATENAME(<datepart> , <date>) --函数以字符串的形式返回日期的指定部份DATEPART(<datepart> , <date>) --函数以整数值的形式返回日期的指定部份GETDATE() --函数以DATETIME 的缺省格式返回系统当前的日期和时刻----系统函数----APP_NAME() --函数返回当前执行的应用程序的名称COALESCE() --函数返回众多表达式中第一个非NULL 表达式的值COL_LENGTH(<'table_name'>, <'column_name'>) --函数返回表中指定字段的长度值COL_NAME(<table_id>, <column_id>) --函数返回表中指定字段的名称即列名DATALENGTH() --函数返回数据表达式的数据的实际长度DB_ID(['database_name']) --函数返回数据库的编号DB_NAME(database_id) --函数返回数据库的名称HOST_ID() --函数返回效劳器端运算机的名称HOST_NAME() --函数返回效劳器端运算机的名称IDENTITY(<data_type>[, seed increment]) [AS column_name])--IDENTITY() 函数只在SELECT INTO 语句中利用用于插入一个identity column列到新表中/*select identity(int, 1, 1) as column_nameinto newtablefrom oldtable*/ISDATE() --函数判定所给定的表达式是不是为合理日期ISNULL(<check_expression>, <replacement_value>) --函数将表达式中的NULL 值用指定值替换ISNUMERIC() --函数判定所给定的表达式是不是为合理的数值NEWID() --函数返回一个UNIQUEIDENTIFIER 类型的数值NULLIF(<expression1>, <expression2>)--NULLIF 函数在expression1 与expression2 相等时返回NULL 值假设不相等时那么返回expression1 的值sql中的保留字action add aggregate allalter after and asasc avg avg_row_length auto_incrementbetween bigint bit binaryblob bool both bycascade case char characterchange check checksum columncolumns comment constraint createcross current_date current_time current_timestamp data database databases datedatetime day day_hour day_minuteday_second dayofmonth dayofweek dayofyear dec decimal default delayeddelay_key_write delete desc describedistinct distinctrow double dropend else escape escapedenclosed enum explain existsfields file first floatfloat4 float8 flush foreignfrom for full functionglobal grant grants grouphaving heap high_priority hourhour_minute hour_second hosts identified ignore in index infileinner insert insert_id intinteger interval int1 int2int3 int4 int8 intoif is isam joinkey keys kill last_insert_idleading left length likelines limit load locallock logs long longbloblongtext low_priority max max_rows match mediumblob mediumtext mediumint middleint min_rows minute minute_second modify month monthname myisamnatural numeric no notnull on optimize optionoptionally or order outeroutfile pack_keys partial passwordprecision primary procedure processprocesslist privileges read realreferences reload regexp renamereplace restrict returns revokerlike row rows secondselect set show shutdownsmallint soname sql_big_tables sql_big_selectssql_low_priority_updates sql_log_off sql_log_update sql_select_limit sql_small_result sql_big_result sql_warnings straight_joinstarting status string tabletables temporary terminated textthen time timestamp tinyblobtinytext tinyint trailing totype use using uniqueunlock unsigned update usagevalues varchar variables varyingvarbinary with write whenwhere year year_month zerofill经常使用SQL命令和ASP编程在进行数据库操作时,无非确实是添加、删除、修改,这得设计到一些经常使用的SQL语句,如下:SQL经常使用命令利用方式:(1) 数据记录挑选:sql="select * from 数据表where 字段名=字段值order by 字段名[desc]"sql="select * from 数据表where 字段名like %字段值% order by 字段名[desc] "sql="select top 10 * from 数据表where 字段名order by 字段名[desc]"sql="select * from 数据表where 字段名in (值1,值2,值3)"sql="select * from 数据表where 字段名between 值1 and 值2"(2) 更新数据记录:sql="update 数据表set 字段名=字段值where 条件表达式"sql="update 数据表set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式"(3) 删除数据记录:sql="delete from 数据表where 条件表达式"sql="delete from 数据表" (将数据表所有记录删除)(4) 添加数据记录:sql="insert into 数据表(字段1,字段2,字段3 …) valuess (值1,值2,值3 …)"sql="insert into 目标数据表select * from 源数据表" (把源数据表的记录添加到目标数据表)(5) 数据记录统计函数:AVG(字段名) 得出一个表格栏平均值COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计MAX(字段名) 取得一个表格栏最大的值MIN(字段名) 取得一个表格栏最小的值SUM(字段名) 把数据栏的值相加引用以上函数的方式:sql="select sum(字段名) as 别名from 数据表where 条件表达式"set rs=conn.excute(sql)用rs("别名") 获取统的计值,其它函数运用同上。

mybatis实战教程之八:动态sql语句

mybatis实战教程之八:动态sql语句

mybatis实战教程(mybatis in action)之八:mybatis 动态sql语句mybatis 的动态sql语句是基于OGNL表达式的。

可以方便的在sql 语句中实现某些逻辑. 总体说来mybatis 动态SQL 语句主要有以下几类:1. if 语句(简单的条件判断)2. choose (when,otherwize) ,相当于java 语言中的switch ,与jstl 中的choose 很类似.3. trim (对包含的内容加上prefix,或者suffix 等,前缀,后缀)4. where (主要是用来简化sql语句中where条件判断的,能智能的处理and or ,不必担心多余导致语法错误)5. set (主要用于更新时)6. foreach (在实现mybatis in 语句查询时特别有用)下面分别介绍这几种处理方式1. mybaits if 语句处理程序代码<select id="dynamicIfTest" parameterType="Blog" resultType="Blog"> select * from t_blog where 1 = 1<if test="title != null">and title = #{title}</if><if test="content != null">and content = #{content}</if><if test="owner != null">and owner = #{owner}</if></select>这条语句的意思非常简单,如果你提供了title参数,那么就要满足title=#{title},同样如果你提供了Content和Owner的时候,它们也需要满足相应的条件,之后就是返回满足这些条件的所有Blog,这是非常有用的一个功能,以往我们使用其他类型框架或者直接使用JDBC的时候,如果我们要达到同样的选择效果的时候,我们就需要拼SQL语句,这是极其麻烦的,比起来,上述的动态SQL就要简单多了2.2. choose (when,otherwize) ,相当于java 语言中的switch ,与jstl 中的choose 很类似程序代码<select id="dynamicChooseTest" parameterType="Blog" resultType="Blog"> select * from t_blog where 1 = 1<choose><when test="title != null">and title = #{title}</when><when test="content != null">and content = #{content}</when><otherwise>and owner = "owner1"</otherwise></choose></select>when元素表示当when中的条件满足的时候就输出其中的内容,跟JAVA中的switch效果差不多的是按照条件的顺序,当when中有条件满足的时候,就会跳出choose,即所有的when和otherwise条件中,只有一个会输出,当所有的我很条件都不满足的时候就输出otherwise中的内容。

mysql基础语句汇总

mysql基础语句汇总

mysql基础语句汇总MySQL是一种常用的关系型数据库管理系统,它支持多种基础语句来操作数据库。

下面列举了十个常用的MySQL基础语句,用于对数据库进行增删改查等操作。

1. 创建数据库:CREATE DATABASE database_name;通过此语句可以创建一个新的数据库。

其中database_name为你想要创建的数据库的名称。

2. 创建表:CREATE TABLE table_name (column1 datatype,column2 datatype,column3 datatype,...);通过此语句可以在数据库中创建一个新的表。

其中table_name为你想要创建的表的名称,column1、column2等为表的列名,datatype为列的数据类型。

3. 插入数据:INSERT INTO table_name (column1, column2, column3, ...)VALUES (value1, value2, value3, ...);通过此语句可以向表中插入新的数据。

其中table_name为你想要插入数据的表的名称,column1、column2等为表的列名,value1、value2等为要插入的数据值。

4. 更新数据:UPDATE table_nameSET column1 = value1, column2 = value2, ...WHERE condition;通过此语句可以更新表中的数据。

其中table_name为你想要更新数据的表的名称,column1、column2等为要更新的列名和新的数据值,condition为更新的条件。

5. 删除数据:DELETE FROM table_nameWHERE condition;通过此语句可以删除表中的数据。

其中table_name为你想要删除数据的表的名称,condition为删除的条件。

6. 查询数据:SELECT column1, column2, ...FROM table_nameWHERE condition;通过此语句可以从表中查询数据。

ibatis annotations in 条件

ibatis annotations in 条件

ibatis annotations in 条件
您好!iBatis条件(annotations)是指在iBatis中使用的一种注解,用于定义查询条件。

以下是一些常见的iBatis条件注解:
1. @Select:用于定义查询语句,可以指定查询条件。

例如:@Select("SELECT * FROM table WHERE column =
#{value}")
2. @Insert:用于定义插入语句,可以指定插入的条件。

例如:@Insert("INSERT INTO table (column1, column2) VALUES (#{value1}, #{value2})")
3. @Update:用于定义更新语句,可以指定更新的条件。

例如:@Update("UPDATE table SET column = #{value} WHERE condition = #{condition}")
4. @Delete:用于定义删除语句,可以指定删除的条件。

例如:@Delete("DELETE FROM table WHERE column =
#{value}")
以上是一些常见的iBatis条件注解,您可以根据具体需求选择使用。

ibatis动态SQL标签用法

iBatis动态SQL标签用法1、动态SQL片段通过SQL片段达到代码复用<!--动态条件分页查询--><sql id="sql_count">select count(*)</sql><sql id="sql_select">select *</sql><sql id="sql_where">from icp<dynamic prepend="where"><isNotEmpty prepend="and"property="name">name like '%$name$%'</isNotEmpty><isNotEmpty prepend="and"property="path">path like '%path$%'</isNotEmpty><isNotEmpty prepend="and"property="area_id">area_id = #area_id#</isNotEmpty><isNotEmpty prepend="and"property="hided">hided = #hided#</isNotEmpty></dynamic><dynamic prepend=""><isNotNull property="_start"><isNotNull property="_size">limit #_start#, #_size#</isNotNull></isNotNull></dynamic></sql><select id="findByParamsForCount"parameterClass="map"resultClass="int "><include refid="sql_count"/><include refid="sql_where"/></select><select id="findByParams"parameterClass="map"resultMap="icp.result_base"><include refid="sql_select"/><include refid="sql_where"/></select>2、数字范围查询所传参数名称是捏造所得,非数据库字段,比如_img_size_ge、_img_size_lt字段<isNotEmpty prepend="and"property="_img_size_ge"><![CDATA[img_size >= #_img_size_ge#]]></isNotEmpty><isNotEmpty prepend="and"property="_img_size_lt"><![CDATA[img_size < #_img_size_lt#]]></isNotEmpty>多次使用一个参数也是允许的<isNotEmpty prepend="and"property="_now"><![CDATA[execplantime >= #_now#]]></isNotEmpty><isNotEmpty prepend="and"property="_now"><![CDATA[closeplantime <= #_now#]]></isNotEmpty>3、时间范围查询<isNotEmpty prepend="" property="_starttime"><isNotEmpty prepend="and"property="_endtime"><![CDATA[createtime >= #_starttime#and createtime < #_endtime#]]></isNotEmpty></isNotEmpty>4、in查询<isNotEmpty prepend="and"property="_in_state">state in ('$_in_state$')</isNotEmpty>5、like查询<isNotEmpty prepend="and"property="chnameone">(chnameone like '%$chnameone$%' or spellinitial like '% $chnameone$%')</isNotEmpty><isNotEmpty prepend="and"property="chnametwo">chnametwo like '%$chnametwo$%'</isNotEmpty>6、or条件<isEqual prepend="and"property="_exeable"compareValue="N "><![CDATA[(t.finished='11' or t.failure=3)]]></isEqual><isEqual prepend="and"property="_exeable"compareValue="Y "><![CDATA[t.finished in ('10','19') and t.failure<3]]></isEqual>7、where子查询<isNotEmpty prepend="" property="exprogramcode"><isNotEmpty prepend="" property="isRational"><isEqual prepend="and"property="isRational"compa reValue="N">code not in(select t.contentcodefrom cms_ccm_programcontent twhere t.contenttype='MZNRLX_MA'and t.programcode = #exprogramcode#)</isEqual></isNotEmpty></isNotEmpty><select id="findByProgramcode"parameterClass="string"resultMap="cms_ ccm_material.result">select *from cms_ccm_materialwhere code in(select t.contentcodefrom cms_ccm_programcontent twhere t.contenttype = 'MZNRLX_MA'and programcode = #value#)order by updatetime desc</select>9、函数的使用<!--添加--><insert id="insert"parameterClass="RuleMaster">insert into rulemaster(name,createtime,updatetime,remark) values (#name#,now(),now(),#remark#)<selectKey keyProperty="id"resultClass="long">select LAST_INSERT_ID()</selectKey></insert><!--更新--><update id="update"parameterClass="RuleMaster">update rulemaster setname = #name#,updatetime = now(),remark = #remark#where id = #id#</update>10、map结果集<!--动态条件分页查询--><sql id="sql_count">select count(a.*)</sql><sql id="sql_select">select a.id vid,a.img imgurl,a.img_s imgfile,b.vfilename vfilename, name,c.id sid,c.url url,c.filename filename,c.status status</sql><sql id="sql_where">From secfiles c, juji b, videoinfo awherea.id =b. videoidand b.id = c.segmentidand c.status = 0order by a.id asc,b.id asc,c.sortnum asc<dynamic prepend=""><isNotNull property="_start"><isNotNull property="_size">limit #_start#, #_size#</isNotNull></isNotNull></dynamic></sql><!--返回没有下载的记录总数--><select id="getUndownFilesForCount"parameterClass="map"resultClass="i nt"><include refid="sql_count"/><include refid="sql_where"/></select><!--返回没有下载的记录--><select id="getUndownFiles"parameterClass="map"resultClass="java.util. HashMap"><include refid="sql_select"/><include refid="sql_where"/></select>。

ibatis foreach写法

ibatis foreach写法在iBatis中,使用foreach语句是一种方便的方式来处理集合或数组数据。

下面是iBatis中使用foreach语句的写法示例:1. 单个元素遍历:```sql<select id="selectPerson" resultType="Person">SELECT FROM person WHERE id IN<foreach item="id" index="index" collection="list" open="(" separator="," close=")">{id}</foreach></select>```在上面的示例中,`collection`属性指定了要遍历的集合或数组,`item`属性表示当前迭代的元素,`index`属性表示当前迭代的索引,`open`和`close`属性指定了遍历结果的开头和结尾,`separator`属性指定了元素之间的分隔符。

2. 多个属性遍历:```sql<select id="selectPersons" resultType="Person">SELECT FROM person<where><foreach item="person" index="index" collection="list" separator="AND">(id = {} AND name = {})</foreach></where></select>```在上面的示例中,我们使用了`where`标签来构建查询条件,并在其中嵌套了`foreach`标签。

mybatis sql语句写法

MyBatis 是一个流行的持久层框架,它提供了一种将 Java 对象和关系数据库中的数据进行映射的方式。

在 MyBatis 中,SQL 语句可以使用 XML 文件或注解的方式进行编写。

以下是 MyBatis 中 SQL 语句的两种常用写法:### 1. XML 文件方式在 MyBatis 中,SQL 语句通常会被定义在 XML 文件中,例如 `mapper.xml`。

XML 文件中可以包含各种 SQL 语句,比如查询、插入、更新、删除等。

#### 示例:```xml<!-- 定义一个查询语句 --><select id="selectUserById" parameterType="int" resultType="User">SELECT * FROM users WHERE id = #{userId}</select><!-- 定义一个插入语句 --><insert id="insertUser" parameterType="User">INSERT INTO users (id, username, password) VALUES (#{id}, #{username},#{password})</insert>```在上面的示例中,我们分别定义了一个查询语句和一个插入语句。

其中,`<select>` 标签用于定义查询语句,`<insert>` 标签用于定义插入语句。

在这两个标签中,我们可以指定 SQL 语句的内容,并使用 `#{}` 来引用参数或属性。

### 2. 注解方式除了 XML 文件,MyBatis 也支持使用注解的方式在接口方法上直接定义 SQL 语句。

#### 示例:```javapublic interface UserMapper {@Select("SELECT * FROM users WHERE id = #{userId}")User selectUserById(int userId);@Insert("INSERT INTO users (id, username, password) VALUES (#{id}, #{username}, #{password})")void insertUser(User user);}```在上面的示例中,我们定义了一个 `UserMapper` 接口,并使用 `@Select` 和 `@Insert` 注解来分别指定查询和插入的 SQL 语句。

mybatis写法sql

mybatis写法sqlMyBatis是一种流行的Java持久化框架,它提供了一种简单而强大的方式来执行SQL查询和操作数据库。

下面是一些使用MyBatis编写SQL的示例:1. 查询操作:```java\n@Select(\"SELECT * FROM users WHERE id =#{id}\")\nUser getUserById(int id);\n```上述代码使用`@Select`注解指定了查询语句,并使用`#{id}`占位符来传递参数。

在执行时,MyBatis会将占位符替换为实际的参数值,并返回查询结果。

2. 插入操作:```java\n@Insert(\"INSERT INTO users (name, age) VALUES (#{name}, #{age})\")\nvoid insertUser(User user);\n```上述代码使用`@Insert`注解指定了插入语句,并使用`#{name}`和`#{age}`占位符来传递参数。

在执行时,MyBatis会将占位符替换为实际的参数值,并将数据插入到数据库中。

3. 更新操作:```java\n@Update(\"UPDATE users SET name = #{name}, age = #{age} WHERE id =#{id}\")\nvoid updateUser(User user);\n```上述代码使用`@Update`注解指定了更新语句,并使用`#{name}`、`#{age}`和`#{id}`占位符来传递参数。

在执行时,MyBatis会将占位符替换为实际的参数值,并更新数据库中对应的记录。

4. 删除操作:```java\n@Delete(\"DELETE FROM users WHERE id = #{id}\")\nvoid deleteUser(int id);\n```上述代码使用`@Delete`注解指定了删除语句,并使用`#{id}`占位符来传递参数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Xml 代码
1.
<select id="com.fashionfree.stat.accesslog.model.StatMemberAction.selectActionIdsO fModule"
2. 3. 4. 5. 6. 7. ;hashMap"> select moduleId, actionId from StatMemberAction <dynamic prepend="where moduleId in"> <iterate open="(" close=")" conjunction=","> #[]#
(3) 输入参数为一个 java.util.HashMap
Xml 代码 1. 2. 3. 4. 5. 6. 7. 8. 9. <select id="com.fashionfree.stat.accesslog.selectActionIdAndActionNumber" parameterClass="hashMap" resultMap="getActionIdAndActionNumber"> select actionId, count(*) as count from MemberAccessLog where memberId = #memberId#
select count(distinct memberId) from MemberAccessLog where accessTimestamp &gt;= #start# and accessTimestamp &lt; #end#
10. and actionId in $actionIdString$ 11. </select>
32. <isNotNull property="startIndex"> 33. <isNotNull property="pageSize"> 34. limit #startIndex# , #pageSize# 35. </isNotNull> 36. </isNotNull> 37. </dynamic> 38. </sql>
推荐使用第一种方式,写为&lt; 和 &gt; (XML 不对 CDATA 里的内容进行解析,因此如 果 CDATA 中含有 dynamic 标签,将不起作用) (9)include 和 sql 标签 将常用的 sql 语句整理在一起,便于共用:
Xml 代码 1. 2. 3. 4. 5. <sql id="selectBasicSql"> select samplingTimestamp,onlineNum,year, month,week,day,hour from
(1) 输入参数为单个值
Xml 代码 1. 2. 3. 4. 5. 6. 7. <delete id="com.fashionfree.stat.accesslog.deleteMemberAccessLogsBefore" parameterClass="long"> delete from MemberAccessLog where accessTimestamp = #value# </delete>
6. 7. 8. 9.
OnlineMemberNum </sql> <sql id="whereSqlBefore"> where samplingTimestamp &lt;= #samplingTimestamp#
10. </sql> 11. <select id="com.fashionfree.accesslog.selectOnlineMemberNumsBeforeSamplingTimes tamp" parameterClass="hashmap" resultClass="OnlineMemberNum"> 12. <include refid="selectBasicSql" /> 13. <include refid="whereSqlBefore" /> 14. </select>
10. </iterate> 11. </dynamic> 12. order by 13. moduleId 14. </select>
说明:注意 select 的标签中没有 parameterClass 一项 另:这里也可以把数组放进一个 hashMap 中,但增加额外开销,不建议使用 (6)让 ibatis 把参数直接解析成字符串
Xml 代码 1. <delete id="com.fashionfree.stat.accesslog.deleteMemberAccessLogsBefore" paramete rClass="long"> 2. 3. 4. delete from MemberAccessLog where
5. 6.
Xml 代码 1. <select id="com.fashionfree.stat.accesslog.selectSumDistinctCountOfAccessMemberN um" 2. parameterClass="hashMap" resultClass="int">
3. 4. 5. 6. 7. 8. 9.
(2) 输入参数为一个对象
Xml 代码 1. 2. 3. 4. 5. 6. 7. 8. 9. <insert id="com.fashionfree.stat.accesslog.MemberAccessLog.insert" parameterClass="com.fashionfree.stat.accesslog.model.MemberAccessLog> insert into MemberAccessLog ( accessLogId, memberId, clientIP, httpMethod, actionId, requestURL, accessTimestamp, extend1, extend2, extend3 )
说明:本例中,代码应为: HashMap hashMap = new HashMap(); hashMap.put(“accessTimestamp”, someValue); pagedQuery(“com.fashionfree.stat.accesslog.selectMemberAccessLogBy”, hashMap); pagedQuery 方法首先去查找名为 com.fashionfree.stat.accesslog.selectMemberAccessLogBy.Count 的 mapped statement 来进行 sql 查询,从而得到 com.fashionfree.stat.accesslog.selectMemberAccessLogBy 查 询的记录个数, 再进行所需的 paged sql 查询 (com.fashionfree.stat.accesslog.selectMemberAccessLogBy),具体过程参见 utils 类中的 相关代码 (8)sql 语句中含有大于号>、小于号< 1. 将大于号、小于号写为: &gt; &lt; 如:
10. <include refid="whereSql"/> 11. </select> 12. <sql id="selectAllSql"> 13. select 14. accessLogId, memberId, clientIP, 15. httpMethod, actionId, requestURL, 16. accessTimestamp, extend1, extend2, 17. extend3 18. from 19. MemberAccessLog 20. </sql> 21. <sql id="whereSql"> 22. accessTimestamp &lt;= #accessTimestamp# 23. </sql> 24. <sql id="countSql"> 25. select 26. count(*) 27. from 28. MemberAccessLog 29. </sql> 30. <sql id="pageSql"> 31. <dynamic>
10. and accessTimestamp &gt; #start# 11. and accessTimestamp &lt;= #end# 12. group by actionId
13. </select>
(4) 输入参数中含有数组
Xml 代码 1. 2. 3. 4. 5. 6. 7. 8. 9. <insert id="updateStatusBatch" parameterClass="hashMap"> update Question set status = #status# <dynamic prepend="where questionId in"> <isNotNull property="actionIds"> <iterate property="actionIds" open="(" close=")" conjunction=","> #actionIds[]#
相关文档
最新文档