1.MyBatis实现模糊查询
1.${…}代替#{…}
2.把’%#{name}%’改为”%”#{name}”%”
3.使用sql中的字符串拼接函数
4.使用标签bind
<select id="selectPersons" resultType-"person" parameterType="person">
<bind name="pattern" value=" '%' + _parameter.username + '%' "/>
select id, sex, age, username, password from person where username LIKE #{pattern}
</select>
参考:
MyBatis实现模糊查询的几种方式
SQL Count(*)函数,GROUP_By,Having的联合使用
2. group_concat函数
用法:group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator ‘分隔符’] )
group_concat长度限制
mysql中group_concat函数对此函数的处理结果字符串长度是有限制的,默认为1024;所以如果结果字符串太长的话,就会在数据库里被截取,因此没有显示全部数据。
解决方法:
1、SET GLOBAL group_concat_max_len = 102400; //其中数字大小可修改
注意:该方法缺点是重启服务后设置失效
2、在MySQL配置文件(my.ini)中加:
group_concat_max_len = -1 # -1为最大值或填入你要的最大长度
并重启mysql
3. order_by函数
order by id desc, time desc
首先按id降序排列(优先),如果id字段一样,再按time降序排列(前提是满足id降序排列)order by name, age desc
name优先,name一样的话,就按age排序。后面再加第三列的话一样,以此类推下去
order by 几种排序的写法
1.单例升序
select <column_name> from <table_name> order by <column_name>;(默认排序,即不写ASC)
2.单列降序
select <column_name> from <table_name> order by <column_name> desc;
3.多列升序
select <column_one>, <column_two> from <table_name> order by <column_one>,<column_two>;
4.多列升序
select <column_one>, <column_two> from <table_name> order by <column_one>,<column_two> desc;
5.多列混合排序
select <column_one>, <column_two> from <table_name> order by <column_one> desc, <column_two> asc;