mybatis框架用高级版1动态sql片段 where字句 和 trim 标签 分别 对单表进行增改查处理
2019-03-20 18:32
405 查看
摘要
mybatis高级版 单表 用动态 sql 片段 where字句 和 trim 标签 分别 实现查询,修改 。
第一步建表
以员工表单表为例 create table emp1( id varchar2(20) primary key, name varchar2(20)unique not null, password varchar2(6) check(length(password)=6)not null, salary number(8,2), age varchar2(3), sex varchar2(3) check(sex in('男','女')), entryday date, status varchar(2) check(status in('1','2')) ); --创建 序列 create sequence empid_seq start with 1 increment by 1;
第二步创建库表对应的实体类
package com.entity; import java.io.Serializable; import java.util.Date; //库表 Emp1 对应的实体 类 public class Empl1 implements Serializable { private String id; private String name; private String password; private double salary; private String age; private String sex; //入职日期 private Date entryday; private String status; //有参无参 get/set tostring 方法此处省略
mybatis-config.xml 核心配置文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd" > <configuration> <!-- 读入小配置文件 --> <properties resource="jdbc.properties"></properties> <!-- 开启二级缓存(以及缓存默认打开) --> <settings> <setting name="cacheEnabled" value="true"/> </settings> <!-- 给实体类起别名 --> <typeAliases> <typeAlias type="com.entity.Empl1" alias="Empl1" /> <typeAlias type="com.entity.Identification" alias="Identification"/> </typeAliases> <environments default="oracle"> <environment id="oracle"> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${user}"/> <property name="password" value="${password}"/> </dataSource> </environment> </environments> <!-- 管理mapper文件 --> <mappers> <mapper resource="com/empdaotest/Emp1DaoImplTest.xml" /> </mappers> </configuration>
创建 Dao 对应的接口 及mapper文件处理
一个方法对应一个文件 便于阅读
动态sql实现查询 两种写法
对应接口中的方法: package com.empdaotest; import com.entity.Empl1; import java.util.List; import org.apache.ibatis.annotations.Param; public interface Emp1DaoTest { //测试动态sql 写法一: public Empl1 select1(@Param("id")String id,@Param("name")String name,@Param("cid")String cid); //测试动态sql 写法二: public Empl1 select2(@Param("id")String id,@Param("name")String name,@Param("password")String password); } 对应mapeer文件实现的动态sql 语句 <!--将共有的查询结果进行提取--> <sql id="Empl1_sql1"> id,name,password,salary,age,sex,entryday,status,cid </sql> <!-- where 子句 动态sql 写法1 --> <select id="select1" resultType="Empl1"> select <include refid="Empl1_sql1"></include> from emp1 <where> <if test="id!=null"> id=#{id} </if> <if test="name!=null"> and name = #{name} </if> <if test="cid"> and cid =#{cid} </if> </where> </select> <!-- 动态sql 写法2 --> <select id="select2" resultType="Empl1"> select <include refid="Empl1_sql1"></include> from emp1 <trim prefix="where" prefixOverrides="and|or"> <if test="id!=null"> id=#{id} </if> <if test="name!=null"> and name=#{name} </if> <if test="password!=null"> and password=#{password} </if> </trim> </select>
动态 sql 实现修改 两张写法
接口同上 对应接口中的方法: //动态 sql 对 uadate 修改字句处理 第一种形式 public void updateByIdEmp1(Empl1 emp); //动态 sql 对 uadate 修改字句处理 第二种形式 public void updateByIdEmp2(Empl1 emp); 对应mapeer文件实现的动态sql 语句 <!-- 用动态sql 修改 update 第一种形式 --> <update id="updateByIdEmp1" parameterType="Empl1"> update emp1 <set> <if test="name!=null"> name=#{name}, </if> <if test="salary!=0"> salary=#{salary}, </if> <if test="age!=null"> age=#{age} </if> </set> where id=#{id} </update> <!-- 用动态sql 修改 update 第二种形式--> <update id="updateByIdEmp2" parameterType="Empl1"> update emp1 <trim prefix="set" prefixOverrides=","> /* 解释说明: prefix="set" 表示 字句关键字 prefixOverrides="," 指定忽略最后一个逗号 */ <if test="name!=null"> name=#{name}, </if> <if test="salary!=0"> salary=#{salary}, </if> <if test="age!=null"> age=#{age} </if> </trim> where id=#{id} </update>
相关文章推荐
- MyBatis代码实例系列-06:Mybatis动态SQL标签(一)---if、where、set、trim、choose
- MyBatis-动态SQL的if、choose、when、otherwise、trim、where、set、foreach标签的使用
- mybatis的动态SQL(三)where、set、trim标签的使用
- MyBatis动态SQL中trim标签的使用
- mybatis动态sql中的trim标签的使用
- MyBatis动态SQL中trim标签的运用
- ssm框架学习---mybatis中动态sql中的if片段
- mybatis动态sql中的trim标签的使用
- mybatis高级版 利用动态sql片段加入 foreach 循环拼接 实现 单表批量查询、批量修改、批量删除、批量添加。
- mybatis中动态sql标签之if trim
- Mybatis动态标签--trim,where,set
- Mybatis的动态sql----where,trim,set,foreach
- ssm框架学习---mybatis中动态sql中的sql片段
- mybatis动态sql中的trim标签的使用
- mybatis动态sql中的trim标签的使用
- mybatis动态sql中的trim标签的使用
- 框架学习系列 mybatis 第十五篇 mybatis动态sql及常用标签二
- mybatis动态sql中的trim标签的使用
- mybatis动态sql中where标签的使用
- MyBatis动态SQL中的trim标签的使用方法