直接操作数据库的底层sql语句
select * from meta_table_info where table_name like '%per%' or table_cname like '%测试%' or label like '%23%';
select table_id from meta_field_info where concat (field_cname,field_name) like CONCAT("%",'年',"%");
select * from meta_table_info where table_id in
( select table_id from meta_field_info where field_cname like '%年%' or field_name like '%i%');
select * from meta_table_info where table_id in
(select table_id from meta_field_info
where concat (field_cname,field_name) like CONCAT("%",'年',"%"));
第一条语句是用最基础的用 like‘%%’去包裹要查询的信息
第二条语句使用了CONCAT(“%”,’年’,”%”) 可防止sql注入
第三条语句是在第一条的结果上的多表联合查询
第四条语句是在第二条的结果上的联合查询,并且多个查询条件整合到一起了,去掉了or连接语句
<select id="Table" resultMap="ResultMap" parameterType="java.lang.String">
SELECT * FROM meta_table_info WHERE table_name like '%${search}%'
or table_cname like '%${search}%' or label like '%${search}%'
</select>
<select id="Table" resultMap="ResultMap" parameterType="java.lang.String">
SELECT * FROM meta_table_info
WHERE table_name like CONCAT("%",#{search},"%")
or table_cname like CONCAT("%",#{search},"%")
or label like CONCAT("%",#{search},"%")
</select>
<!--SELECT * FROM meta_table_info
WHERE concat (field_cname,field_name) like CONCAT("%",#{search},"%") -->
<select id="Field" resultMap="ResultMap" parameterType="java.lang.String">
SELECT * FROM meta_table_info WHERE table_id IN
( SELECT table_id FROM meta_field_info WHERE field_cname like
CONCAT("%",#{search},"%")or field_name like CONCAT("%",#{search},"%"))
</select>
<select id="Field" resultMap="ResultMap" parameterType="java.lang.String">
SELECT * FROM meta_table_info WHERE table_id IN
( SELECT table_id FROM meta_field_info WHERE
concat (field_cname,field_name) like CONCAT("%",#{search},"%") )
</select>
上面是在mybatis中mapper文件中的模糊查询的实现
这四条mapper中的实现语句和底层sql语句相对应,其中第二条也可写出注释中那样,更加简洁些