zoukankan      html  css  js  c++  java
  • Mybatis的模糊查询以及自动映射

    第一种:使用CONCAT()函数连接参数形式

    select * from 表名 where 列名 like concat( '% ,#{参数值}, '% )

    例:

    param.setUsername("%CD%");
          param.setPassword("%11%");
     
       <select  id="selectPersons" resultType="person" parameterType="person">
           select id,sex,age,username,password from person where true
               <if test="username!=null"> AND username LIKE #{username}</if>
               <if test="password!=null">AND password LIKE #{password}</if>
        
       </select>

    这种方式可以预防SQL注入,也是比较推荐的一种方式

    第二种:使用${}方式

    select * from 表名 where 列名 like '%${参数值}%' 

    例:

    上面那种方式,如果参数为一个参数需要在声明方法是在方法的参数列表中添加@Param("参数值"),或者直接将参数值value,参数为多个时不能再使用value方式。

    这种方式无法预防SQL注入

    第三种:使用#{}

    select * from 表名 where 列名 like "%" #{参数值} "%" 

    这种方式在需要在参数值的两头添加一个空格


    MyBatis中的自动映射机制

    在 MyBatis 中,自动映射有三种模式,分别是 NONE、PARTIAL、FULL。其中 NONE 表示不启用自动映射,PARTIAL 表示只对非嵌套的 resultMap 进行自动映射,FULL 表示对所有的 resultMap 都进行自动映射。默认的自动映射模式为 PARTIAL

    在MyBatis的核心文件中的<settings>节点下添加如下节点来控制自动映射的方式

    <setting name="autoMappingBehavior" value="PARTIAL"/>

    手动映射,当表中的字段和实体类中的属性名称不相同的时候,自动映射机制不能映射成功 需要手动将二者进行关联

    <resultMap id="唯一的标识" type="映射的pojo对象">
      <id column="表的主键字段,或者可以为查询语句中的别名字段" jdbcType="字段类型" property="映射pojo对象的主键属性" /> 
      <result column="表的一个字段(可以为任意表的一个字段)" jdbcType="字段类型" property="映射到pojo对象的一个属性(须为type定义的pojo对象中的一个属性)"/>
    </resultMap>

    当进行手动映射之后,select之类的标签,resultType将更改为resultMap

    <select id="getById"  resultMap="resultMap的唯一的标识"></select>
  • 相关阅读:
    Python操作MongoDB(PyMongo模块的使用)
    python 读取单所有json数据写入mongodb(单个)
    python 导出mongoDB数据中的数据
    Python连接MySQL的实例代码
    Python操作Mysql实例代码教程在线版(查询手册)_python
    Python MySQLdb模块连接操作mysql数据库实例_python
    python连接mysql实例分享_python
    my.cnf配置文件参数解释
    MySql增加字段、删除字段、修改字段名称、修改字段类型
    mysql 定时任务
  • 原文地址:https://www.cnblogs.com/tinghao/p/11639299.html
Copyright © 2011-2022 走看看