关于mybatis动态SQL语句的写法
2017-11-01 19:10
507 查看
由于mybatis是一个轻量级的框架,SQL语句shi自己写的,可以不断的优化SQL语句,提高查询的效率,近来用到了动态SQL,写了一些简单的SQL语句,如下所示:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.qf.dao.CarinfoMapper" >
<resultMap id="BaseResultMap" type="com.qf.pojo.Carinfo" >
<id column="car_id" property="carId" jdbcType="BIGINT" />
<result column="car_name" property="carName" jdbcType="VARCHAR" />
<result column="car_color" property="carColor" jdbcType="VARCHAR" />
<result column="car_price" property="carPrice" jdbcType="DOUBLE" />
<result column="car_desc" property="carDesc" jdbcType="VARCHAR" />
</resultMap>
<sql id="Base_Column_List" >
car_id, car_name, car_color, car_price, car_desc
</sql>
<!-- 动态SQL模糊查询,参数用map传递 -->
<select id="findLikeCarinfo" parameterType="java.util.Map" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"></include>
<!--include refid="Base_Column_List"参数不可以丢 -->
from carinfo
<where>
<if test="carName != null">
car_name like #{carName}
</if>
<if test="carColor != null">
and car_color like #{carColor}
</if>
<if test="carDesc != null">
and car_desc like #{carDesc}
</if>
</where>
</select>
<!-- 添加任意字段 -->
<insert id="addTrimCarInfo" parameterType="java.util.Map">
insert into carinfo
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="carName != null">
car_name,
</if>
<if test="carColor != null">
car_color,
</if>
<if test="carPrice != null">
car_price,
</if>
<if test="carDesc != null">
car_desc,
</if>
</trim>
<!-- 关键点,在插入数据的时候,其 prefix="values("不能丢弃-->
<trim prefix="values(" suffix=")" suffixOverrides=",">
<if test="carName != null">
#{carName},
</if>
<if test="carColor != null">
#{carColor},
</if>
<if test="carPrice != null">
#{carColor},
</if>
<if test="carDesc != null">
#{carDesc},
</if>
</trim>
<!-- (car_name,car_color,car_price,car_desc) values (#{carName},#{carColor},#{carPrice},#{carDesc}) -->
</insert>
<!-- 根据条件查询数据的时候,二选一 -->
<select id="selectTiaoJian" parameterType="java.util.Map" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"></include>
from carinfo where
<choose>
<when test="carColor != null">
car_color like #{carColor}
</when>
<otherwise>
car_price='23.4'
</otherwise>
</choose>
</select>
<!-- 根据多个参数去删除数据 -->
<delete id="delMory" parameterType="com.qf.pojo.Carinfo">
delete from carinfo where car_id in
<foreach collection="ids" item="id" open="(" separator="," close=")">
#{id}
<!-- 此处的item是别名的意思,所以此处要使用别名来处理 -->
</foreach>
</delete>
<!-- 修改任意字段 -->
<update id="updateCarINfo" parameterType="java.util.Map">
update carinfo
<set >
<if test="carName != null">
car_name=#{carName},
</if>
<if test="carColor != null">
car_color=#{carColor},
</if>
<if test="carDesc != null">
car_desc=#{carDesc},
</if>
<if test="carPrice != null">
car_price=#{carPrice},
</if>
</set>
where car_id = # {carId}
</update>
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Long" >
select
<include refid="Base_Column_List" />
from carinfo
where car_id = #{carId,jdbcType=BIGINT}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Long" >
delete from carinfo
where car_id = #{carId,jdbcType=BIGINT}
</delete>
<insert id="insert" parameterType="com.qf.pojo.Carinfo" >
insert into carinfo (car_id, car_name, car_color,
car_price, car_desc)
values (#{carId,jdbcType=BIGINT}, #{carName,jdbcType=VARCHAR}, #{carColor,jdbcType=VARCHAR},
#{carPrice,jdbcType=DOUBLE}, #{carDesc,jdbcType=VARCHAR})
</insert>
<insert id="insertSelective" parameterType="com.qf.pojo.Carinfo" >
insert into carinfo
<trim prefix="(" suffix=")" suffixOverrides="," >
<if test="carId != null" >
car_id,
</if>
<if test="carName != null" >
car_name,
</if>
<if test="carColor != null" >
car_color,
</if>
<if test="carPrice != null" >
car_price,
</if>
<if test="carDesc != null" >
car_desc,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides="," >
<if test="carId != null" >
#{carId,jdbcType=BIGINT},
</if>
<if test="carName != null" >
#{carName,jdbcType=VARCHAR},
</if>
<if test="carColor != null" >
#{carColor,jdbcType=VARCHAR},
</if>
<if test="carPrice != null" >
#{carPrice,jdbcType=DOUBLE},
</if>
<if test="carDesc != null" >
#{carDesc,jdbcType=VARCHAR},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.qf.pojo.Carinfo" >
update carinfo
<set >
<if test="carName != null" >
car_name = #{carName,jdbcType=VARCHAR},
</if>
<if test="carColor != null" >
car_color = #{carColor,jdbcType=VARCHAR},
</if>
<if test="carPrice != null" >
car_price = #{carPrice,jdbcType=DOUBLE},
</if>
<if test="carDesc != null" >
car_desc = #{carDesc,jdbcType=VARCHAR},
</if>
</set>
where car_id = #{carId,jdbcType=BIGINT}
</update>
<update id="updateByPrimaryKey" parameterType="com.qf.pojo.Carinfo" >
update carinfo
set car_name = #{carName,jdbcType=VARCHAR},
car_color = #{carColor,jdbcType=VARCHAR},
car_price = #{carPrice,jdbcType=DOUBLE},
car_desc = #{carDesc,jdbcType=VARCHAR}
where car_id = #{carId,jdbcType=BIGINT}
</update>
</mapper>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.qf.dao.CarinfoMapper" >
<resultMap id="BaseResultMap" type="com.qf.pojo.Carinfo" >
<id column="car_id" property="carId" jdbcType="BIGINT" />
<result column="car_name" property="carName" jdbcType="VARCHAR" />
<result column="car_color" property="carColor" jdbcType="VARCHAR" />
<result column="car_price" property="carPrice" jdbcType="DOUBLE" />
<result column="car_desc" property="carDesc" jdbcType="VARCHAR" />
</resultMap>
<sql id="Base_Column_List" >
car_id, car_name, car_color, car_price, car_desc
</sql>
<!-- 动态SQL模糊查询,参数用map传递 -->
<select id="findLikeCarinfo" parameterType="java.util.Map" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"></include>
<!--include refid="Base_Column_List"参数不可以丢 -->
from carinfo
<where>
<if test="carName != null">
car_name like #{carName}
</if>
<if test="carColor != null">
and car_color like #{carColor}
</if>
<if test="carDesc != null">
and car_desc like #{carDesc}
</if>
</where>
</select>
<!-- 添加任意字段 -->
<insert id="addTrimCarInfo" parameterType="java.util.Map">
insert into carinfo
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="carName != null">
car_name,
</if>
<if test="carColor != null">
car_color,
</if>
<if test="carPrice != null">
car_price,
</if>
<if test="carDesc != null">
car_desc,
</if>
</trim>
<!-- 关键点,在插入数据的时候,其 prefix="values("不能丢弃-->
<trim prefix="values(" suffix=")" suffixOverrides=",">
<if test="carName != null">
#{carName},
</if>
<if test="carColor != null">
#{carColor},
</if>
<if test="carPrice != null">
#{carColor},
</if>
<if test="carDesc != null">
#{carDesc},
</if>
</trim>
<!-- (car_name,car_color,car_price,car_desc) values (#{carName},#{carColor},#{carPrice},#{carDesc}) -->
</insert>
<!-- 根据条件查询数据的时候,二选一 -->
<select id="selectTiaoJian" parameterType="java.util.Map" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"></include>
from carinfo where
<choose>
<when test="carColor != null">
car_color like #{carColor}
</when>
<otherwise>
car_price='23.4'
</otherwise>
</choose>
</select>
<!-- 根据多个参数去删除数据 -->
<delete id="delMory" parameterType="com.qf.pojo.Carinfo">
delete from carinfo where car_id in
<foreach collection="ids" item="id" open="(" separator="," close=")">
#{id}
<!-- 此处的item是别名的意思,所以此处要使用别名来处理 -->
</foreach>
</delete>
<!-- 修改任意字段 -->
<update id="updateCarINfo" parameterType="java.util.Map">
update carinfo
<set >
<if test="carName != null">
car_name=#{carName},
</if>
<if test="carColor != null">
car_color=#{carColor},
</if>
<if test="carDesc != null">
car_desc=#{carDesc},
</if>
<if test="carPrice != null">
car_price=#{carPrice},
</if>
</set>
where car_id = # {carId}
</update>
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Long" >
select
<include refid="Base_Column_List" />
from carinfo
where car_id = #{carId,jdbcType=BIGINT}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Long" >
delete from carinfo
where car_id = #{carId,jdbcType=BIGINT}
</delete>
<insert id="insert" parameterType="com.qf.pojo.Carinfo" >
insert into carinfo (car_id, car_name, car_color,
car_price, car_desc)
values (#{carId,jdbcType=BIGINT}, #{carName,jdbcType=VARCHAR}, #{carColor,jdbcType=VARCHAR},
#{carPrice,jdbcType=DOUBLE}, #{carDesc,jdbcType=VARCHAR})
</insert>
<insert id="insertSelective" parameterType="com.qf.pojo.Carinfo" >
insert into carinfo
<trim prefix="(" suffix=")" suffixOverrides="," >
<if test="carId != null" >
car_id,
</if>
<if test="carName != null" >
car_name,
</if>
<if test="carColor != null" >
car_color,
</if>
<if test="carPrice != null" >
car_price,
</if>
<if test="carDesc != null" >
car_desc,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides="," >
<if test="carId != null" >
#{carId,jdbcType=BIGINT},
</if>
<if test="carName != null" >
#{carName,jdbcType=VARCHAR},
</if>
<if test="carColor != null" >
#{carColor,jdbcType=VARCHAR},
</if>
<if test="carPrice != null" >
#{carPrice,jdbcType=DOUBLE},
</if>
<if test="carDesc != null" >
#{carDesc,jdbcType=VARCHAR},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.qf.pojo.Carinfo" >
update carinfo
<set >
<if test="carName != null" >
car_name = #{carName,jdbcType=VARCHAR},
</if>
<if test="carColor != null" >
car_color = #{carColor,jdbcType=VARCHAR},
</if>
<if test="carPrice != null" >
car_price = #{carPrice,jdbcType=DOUBLE},
</if>
<if test="carDesc != null" >
car_desc = #{carDesc,jdbcType=VARCHAR},
</if>
</set>
where car_id = #{carId,jdbcType=BIGINT}
</update>
<update id="updateByPrimaryKey" parameterType="com.qf.pojo.Carinfo" >
update carinfo
set car_name = #{carName,jdbcType=VARCHAR},
car_color = #{carColor,jdbcType=VARCHAR},
car_price = #{carPrice,jdbcType=DOUBLE},
car_desc = #{carDesc,jdbcType=VARCHAR}
where car_id = #{carId,jdbcType=BIGINT}
</update>
</mapper>
相关文章推荐
- 游戏中MyBatis的动态SQL语句写法
- 关于mybatis插件tk.mybatis生成的动态sql语句字段不加``的问题
- Mybatis:关于动态生成sql语句的一些问题
- [MyBatis]动态输出SQL语句
- Mybatis学习(8)动态sql语句
- Mybatis的动态sql语句if和choose
- 关于使用JdbcTemplate封装的方法执行原生sql语句的常用写法
- MyBatis的动态sql语句详解,foreach等
- 【转】mybatis实战教程(mybatis in action)之八:mybatis 动态sql语句
- 动态生成mybatis的xml文件,其中的sql语句生成
- mybatis动态SQL语句整理
- mybatis动态sql之foreach语句
- 动态SQL模糊查询语句(存储过程)中关于百分号%的处理
- Mybatis 学习笔记 动态sql语句
- 关于Hibernate利用@DynamicInsert和@DynamicUpdate生成动态SQL语句 -- 如何提高效率
- mybatis动态SQL语句
- MyBatis3-动态SQL语句
- java mybatis 之 mysqlmap 动态 sql 语句
- 【摘】Power Builder 中动态SQL语句的写法
- 动态SQL语句的一些常见写法