中山网站外包,推广信息哪个平台好,做的好看的国内网站欣赏,女的和男的做那个视频网站mybtis动态SQL注解 动态SQL注解脚本动态SQL方法中构建SQLSQL语句构造器 动态SQL注解
分类#xff1a;
脚本动态SQL#xff1a;XML配置方式的动态SQL#xff0c;是用script的方式把它照搬过来#xff0c;用注解来实现。适用于xml配置转换到注解配置方法中构建SQL
脚本动态SQLXML配置方式的动态SQL是用script的方式把它照搬过来用注解来实现。适用于xml配置转换到注解配置方法中构建SQLSelectProvider 、InsertProvider、UpdateProvider、DeleteProvider 这些方法的使用SQL语句构造器实现动态 SQL 的内容
脚本动态SQL
在sql语句中加入script/script标签按照之前sqlmap中的动态sql的样式书写;增删改查都一样
Select(script select * from student where if test \ ssex ! null\ and ssex #{ssex} /if if test \ classId ! 0\ and classid #{classId} /if /where /script)public ListStudent findStudentJiaoBean(Student s);方法中构建SQL
注解SelectProvider、InsertProvider、UpdateProvider、DeleteProvider
用法
创建SQL语句类该类包含需要动态生成的SQL 语句创建Mapper接口类该类和配置文件的接口文件一样用来处理数据库操作利用SelectProvider将 SQL 语句类和 Mapper 接口类关联利用SelectProvider 的 type 属性和 method 属性测试验证编写测试类测试动态生成的SQL 语句是否准确。
//语法
UpdateProvider(type 内部类名.class,method 方法名)eg:
UpdateProvider(type StudentSql.class,method updatestuSqlFunc)public int updateStudentFunc(Student s);class StudentSql{public String updatestuSqlFunc(Student s) {String sql update student set ;String sql1 null;if(s.getBirthday() ! null) {sql birthday #{birthday},;}if(s.getClassId() ! 0) {sql classid #{classId},;}if(s.getSname() ! null) {sql sname #{sname},;}if(s.getSsex() ! null) {sql ssex #{ssex},;}sql1 sql.substring(0, sql.length()-1);sql1 where sid #{sid};return sql1;}}在接口中定义内部类来构建需要的动态sql语句比使用标签的方式结构更加清晰
SQL语句构造器
sql语句构造器的常用方法
属性名说明SELECT开始或插入到 SELECT 子句可以被多次调用参数也会添加到 SELECT子句。FROM开始或插入到 FROM 子句可以被多次调用参数也会添加到 FROM 子句WHERE插入新的 WHERE 子句条件可以多次被调用OR / AND使用 OR / AND 来分隔当前的 WHERE 子句的条件DELETE_FROM开始一个 delete 语句并指定需要从哪个表删除的表名。INSERT_INTO开始一个 insert 语句并指定需要插入数据的表名VALUES插入到 insert 语句中。第一个参数是要插入的列名第二个参数则是该列的值。UPDATE开始一个 update 语句并指定需要更新的表名SET针对 update 语句插入到 “set” 列表中
语法(都一样)
UpdateProvider(type 内部类名.class,method 方法名)eg:
//构造方法(查询)
UpdateProvider(type StudentSql.class,method selectstuGZQ)
public ListStudent selectStudentGZQ(Student s);//构造方法新增
InsertProvider(type StudentSql.class, method insertstuGZQ)
public int insertStudentGZQ(Student s);//构造方法修改
UpdateProvider(type StudentSql.class,method updatestuGZQ)
public int updateStudentGZQ(Student s);//构造方法删除
DeleteProvider(type StudentSql.class,method deletestuGZQ)
public int deleteStudentGZQ(int sid);class StudentSql{public String selectstuGZQ(Student s) {return new SQL() {{SELECT(sid,birthday);SELECT(ssex,sname);SELECT(classid);FROM(Student);if(s.getSsex() ! null) {WHERE(ssex #{ssex});}if(s.getClassId() ! 0) {WHERE(classid #{classId});}}}.toString(); }public String insertstuGZQ(Student s) {return new SQL() {{INSERT_INTO(student);if(s.getSname() ! null) {VALUES(sname,#{sname}); }if(s.getBirthday() ! null) {VALUES(birthday, #{birthday}); }if(s.getSsex() ! null) {VALUES(ssex, #{ssex}); }if(s.getClassId() ! 0) {VALUES(classid, #{classId}); }}}.toString();}public String updatestuGZQ(Student s) {return new SQL() {{UPDATE(student);if(s.getSname() ! null) {SET(sname#{sname});}if(s.getBirthday() ! null) {SET(birthday#{birthday});}if(s.getSsex() ! null) {SET(ssex#{ssex});}if(s.getClassId() ! 0) {SET(classid#{classId});}WHERE(sid #{sid});}}.toString();}public String deletestuGZQ(int sid) {return new SQL() {{DELETE_FROM(student);WHERE(sid #{v});}}.toString();}}