etiquetas mybatis
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>