mybatis-查询练习
今天使用mybatis进行数据库的查询练习
1、最基本的练习:查询数据库的全部信息和根据参数进行查询。这个没有什么体会,只是增加了自己对于maven操作mybatis的熟悉程度。
这个里面有几个注意事项:
*参数占位符:
1、#{},会替换成?,防止sql注入
2、${},拼接sql语句,会发生sql注入问题
*参数类型:parameterType指定返回参数类型,一般省略
*特殊字符
1、转义字符
2、CDATA区
2、动态sql查询,用于条件查询当中
使用if标签,test里面放条件
字符解决
1、恒等式 1=1
2、where标签 在mybatis中可以智能识别
<select id="selectByCondition" resultMap="brandResultMap"> select * from tb_brand <where> <if test="status != null"> and status = #{status} </if> <if test="companyName != null and companyName != ''"> and company_name like #{companyName} </if> <if test="brandName != null and brandName != ''"> and brand_name like #{brandName}; </if> </where> </select>
这是用户输入全部参数的情况。
<select id="selectByConditionSingle" resultMap="brandResultMap"> select * from tb_brand where <choose> <!--相当于Switch--> <when test="status != null"> status = #{status} </when><!--相当于case--> <when test="companyName != null and companyName != ''"> companyName = #{companyName} </when> <when test="brandName != null and brandName != ''"> brandName = #{brandName} </when> <otherwise><!--相当于defaulr--> 1 = 1; </otherwise> </choose>; </select>
在条件查询中,用户不可能总是输入全部参数,这时候就需要判断用户是否输入参数,使用choose、when、otherwise标签进行查询,他们在mybatis中同样也是被智能识别的。
我一共学习了三种知识对数据库进行查询,第一种是jdbc,这个我认为最麻烦,而且限制性很高;第二种是Druid,代码量减少了,逻辑也更为清晰,但仍然不够灵活;现在练习的mybatis,最大的特点是灵活性很高,许多东西不需要再使用js,直接再数据库操作语句进行限制即可,但是maven和mybatis的环境配置比较繁琐,操作还是很简单的。