Explicación detallada de las etiquetas de Mybatis

etiquetas mybatis

inserte la descripción de la imagen aquí

1. Definir la sentencia sql

1.1 seleccionar etiqueta

<select id="selectById" resultMap="BaseResultMap" parameterType="Object">
    select * from user where id=#{
    
    id}
</select>

id: tipo de parámetro de identificación único
: tipo de parámetro, la ruta completa o el alias del parámetro pasado a esta declaración, por ejemplo: com.promote.User
resultMap: tipo de resultado devuelto (resultMap y resultType no se pueden usar al mismo tiempo). Nota: Si es una colección, complete el tipo genérico de la colección.

1.2 insertar etiqueta

<insert id="insert" parameterType="Object">
	insert into user
	<trim  prefix="(" suffix=")" suffixOverrides="," >
		<if test="name != null"> NAME, </if>
	</trim>
	<trim prefix="values(" suffix=")" suffixOverrides="," >
		<if test="name != null  ">  #{
    
    name},  </if>
	</trim>
</insert>

id: identificador único
parámetroTipo: el tipo de parámetro pasado a la declaración

1.3 eliminar etiqueta

<delete id="deleteById" parameterType="Object">
    delete from user where id=#{
    
    id}
</delete>

id: identifica de forma única
el tipo de parámetro: el tipo de parámetro pasado a la declaración

1.4 etiqueta de actualización

<update id="update" parameterType="Object">
	update user set 
		<if test="name != null"> NAME = #{
    
    name},</if>
		<if test="sex != null"> SEX = #{
    
    sex} </if>
	where ID = #{
    
    id}
</update>

id: identifica de forma única
el tipo de parámetro: el tipo de parámetro pasado a la declaración

2. Configurar el conjunto de resultados devuelto

resultadoMapa

Función: establezca la relación de mapeo entre el campo de resultado de la consulta sql y el atributo de clase de entidad, y convierta el conjunto de resultados de la consulta en un objeto java.

<resultMap id="demo" type="com.promote.model.Food">
    <id property="id" column="id" />
    <result column="food" property="foodName" />
    <result column="number" property="number" />
</resultMap>

    // 查询是resultMap 通过id 引用对应的resutMap
<select id="selectFood" resultMap="demo" parameterType="Object">
	select * from food where id = #{
    
    id}
</select>

Atributo principal:

id: cambie el identificador único de resultMap

tipo: el nombre de la clase correspondiente al valor de retorno

Subpropiedades:

id: se usa para establecer la relación de mapeo entre el campo de clave principal y el atributo de entidad

resultado: el usuario establece la relación de mapeo entre los campos ordinarios y los atributos de la entidad

Atributos:

columna: corresponde al nombre del campo en la base de datos

propiedad: el nombre del atributo de la clase de entidad correspondiente

3. Empalme sql dinámico

3.1 si etiqueta

La etiqueta if generalmente se usa en la instrucción WHERE, la instrucción UPDATE y la instrucción INSERT. Al juzgar el valor del parámetro, se determina si se debe usar una determinada condición de consulta, si se debe actualizar un determinado campo o si se debe insertar el valor de un cierto campo.

<if test="name != null and name != ''">
     and NAME = #{
    
    name}
</if>

3.2 etiqueta foreach

La etiqueta foreach se usa principalmente para crear condiciones, que pueden iterar colecciones en SQL. También se usa comúnmente en operaciones como la eliminación y adición de lotes.

<select id="selectIn" resultMap="BaseResultMap">
    select name,hobby 
       from student 
       where id in
   <foreach item="item" index="index" collection="listdemo" open="(" separator="," close=")">
        #{item}
   </foreach>
</select>

colección: especifique los atributos de la colección (lista, matriz, mapa) en el objeto de entrada

elemento: un alias para cada elemento durante la iteración

índice: identifica la posición de cada iteración

abierto: prefijo

cerrar: sufijo

separador: separador, el separador entre cada elemento al iterar

3.3 elegir etiqueta

MyBatis proporciona el elemento de elección para determinar si las condiciones en cuando son verdaderas en orden.Si una es verdadera, elige termina. Cuando no se cumplan todas las condiciones de elección, ejecute el sql de lo contrario. De manera similar a la declaración de cambio de Java, elegir es cambiar, cuando es el caso, y de lo contrario es predeterminado.

Si es la relación con (y), y elige es la relación de o (o).

<select id="getUserListChoose" parameterType="user" resultMap="BaseResultMap">     
    SELECT * from user WHERE 1=1        
        <choose>     
            <when test="Name!=null and student!='' ">     
                   AND name LIKE CONCAT(CONCAT('%', #{
    
    student}),'%')      
            </when>     
            <when test="hobby!= null and hobby!= '' ">     
                    AND hobby = #{
    
    hobby}      
            </when>                   
            <otherwise>     
                    AND AGE = 15  
            </otherwise>     
        </choose>      
</select> 

4. Salida formateada

4.1 etiqueta donde

Cuando hay muchas etiquetas if, el empalme puede ser incorrecto, como en el siguiente código:

<select id="getUserListWhere" parameterType="Object" resultMap="BaseResultMap">     
    SELECT * from user      
        WHERE      
        <if test="name!=null and name!='' ">     
            NAME LIKE CONCAT(CONCAT('%', #{
    
    name}),'%')      
        </if>     
        <if test="sex!= null and sex!= '' ">     
            AND sex = #{
    
    sex}      
        </if>     
</select> 

Cuando el valor del nombre es nulo, la sentencia de consulta aparecerá "WHERE AND". Para solucionar esta situación, además de cambiar "WHERE" por "WHERE 1=1", también puede usar la etiqueta where.

La etiqueta "dónde" sabrá insertar un "dónde" si hay un valor de retorno en la etiqueta que contiene . Además, si una etiqueta devuelve algo que comienza con AND u OR, lo elimina .

<select id="getUserListWhere" parameterType="Object" resultMap="BaseResultMap">     
    SELECT * from user      
       <where>   
         <if test="name!=null and name!='' ">     
            NAME LIKE CONCAT(CONCAT('%', #{
    
    name}),'%')      
         </if>     
         <if test="sex!= null and sex!= '' ">     
            AND sex = #{
    
    sex}      
         </if>   
       </where>        
</select> 

4.2 establecer etiqueta

Función: Después de modificar con la etiqueta set+if, si un elemento es nulo, no se actualizará, pero se mantendrá el valor original de la base de datos.

<update id="updateUser" parameterType="Object">     
    UPDATE user      
    <set>     
        <if test="name!=null and name!='' ">     
            name = #{
    
    name},      
        </if>     
        <if test="sex!=null and sex!='' ">     
            sex = #{
    
    sex},      
        </if> 
        <if test="age!=null and age!='' ">     
            age = #{
    
    age}    
        </if>     
    </set>     
    WHERE ID = #{
    
    id};      
</update>  

4.3 etiqueta de corte

La salida formateada se puede lograr configurando o ignorando el prefijo y el sufijo a través de la etiqueta de corte

<update id="updateById" parameterType="Object">
    update user set 
          <trim  suffixOverrides="," > 
            <if test="name != null  ">
                name=#{
    
    name},
            </if>
            <if test="sex != null  ">
                sex=#{
    
    sex},
            </if>
          </trim> where id=#{
    
    id}
  </update>

Atributos:

prefijo: El prefijo anula y aumenta su contenido.

sufijo: El sufijo anula y aumenta su contenido. Cuando los valores en la etiqueta de recorte no estén todos vacíos, agregue el prefijo de prefijo y el sufijo de sufijo.

prefixOverrides: La condición para el juicio de prefijo. ignorar el primero

suffixOverrides: Condiciones para el juicio de sufijo. Como arriba, suffixOverrides="," ignorará el último ","

5. Definir constantes y referencias

5.1 etiqueta sql

Cuando los campos de consulta o las condiciones de consulta de varios tipos de declaraciones de consulta son los mismos, se pueden definir como constantes para facilitar la llamada. Para despejar la estructura, la instrucción sql también se puede descomponer.

//定义常量
<sql id="Base_Column_List">
	id,name,sex,age
</sql>

5.2 incluir etiqueta

constante de referencia del usuario

 <select id="selectAll" resultMap="BaseResultMap">
     SELECT
     <include refid="Base_Column_List" />
     FROM user
 </select>

Supongo que te gusta

Origin blog.csdn.net/weixin_40307206/article/details/108848914
Recomendado
Clasificación