当前位置 : 主页 > 编程语言 > c++ >

Mybatis通过注解配置动态SQL

来源:互联网 收集:自由互联 发布时间:2021-07-03
tt.text Mybatis动态注解主要是通过org.apache.ibatis.jdbc.SQL这个类实现,通过return new SQL(){}进行返回,同时要把拼接好的SQL语句通过toString()转换成String类型,例子:查询:public class UserProvide
tt.text
Mybatis动态注解主要是通过org.apache.ibatis.jdbc.SQL这个类实现,通过return new SQL(){}进行返回,同时要把
拼接好的SQL语句通过toString()转换成String类型,例子:
查询:
public class UserProvider {
	public String SelectWithSQL(final Map
 
   param){
		return new SQL(){
		   {
			SELECT("*");
			FROM("tb_user");
			if(param.get("tb_id")!=null){
				WHERE("tb_id=#{tb_id}");
			  }
			if(param.get("tb_name")!=null){
				WHERE("tb_name=#{tb_name}");
			  }
			if(param.get("tb_sex")!=null){
				WHERE("tb_sex=#{tb_sex}");
			  }
			if(param.get("tb_age")!=null){
				WHERE("tb_age=#{tb_age}");
			  }
	       }  
		}.toString();
	}
}
上述代码中首先通过new SQL(){}进行返回一个动态的SQL语句,之后通过{}进行动态SQL的拼接,其中SELECT()、FROM()
这些都是该类中的常用方法,通过传入参数取值进行判断后返回相应的where语句,最终合成一个完整的SQL语句。

插入:
public String InsertWithSQL(final User user){
		return new SQL(){
		   {
			INSERT_INTO("tb_user");
			if(user.getId()!=null){
				VALUES("tb_id","#{id}");
			  }
			if(user.getName()!=null){
				VALUES("tb_name","#{name}");
			  }
			if(user.getSex()!=null){
				VALUES("tb_sex","#{sex}");
			  }
			if(user.getAge()!=null){
				VALUES("tb_age","#{age}");
			  }
	       }  
		}.toString();
	}
插入语句的动态SQL注解是通过多次VALUES进行操作的,根据传入的属性进行判断后才进行插入。

更新:
public String UpdateWithSQL(final User user){
		return new SQL(){
		   {
			UPDATE("tb_user");
			if(user.getId()!=null){
				SET("tb_id=#{id}");
			  }
			if(user.getName()!=null){
				SET("tb_name=#{name}");
			  }
			if(user.getSex()!=null){
				SET("tb_sex=#{sex}");
			  }
			if(user.getAge()!=null){
				SET("tb_age=#{age}");
			  }
			WHERE("tb_id=#{id}");
	       }  
		}.toString();
	}
和插入没什么太大的区别,主要是通过SET元素进行修改。

删除:
public String DeleteWithSQL(final User user){
		return new SQL(){
		   {
			DELETE_FROM("tb_user");
			if(user.getId()!=null){
				WHERE("tb_id=#{id}");
			  }
			if(user.getName()!=null){
				WHERE("tb_name=#{name}");
			  }
			if(user.getSex()!=null){
				WHERE("tb_sex=#{sex}");
			  }
			if(user.getAge()!=null){
				WHERE("tb_age=#{age}");
			  }
			if(user.getId()!=null){
			    WHERE("tb_id=#{id}");
			}
	       }  
		}.toString();
	}
 
网友评论