tt.text Mybatis动态注解主要是通过org.apache.ibatis.jdbc.SQL这个类实现,通过return new SQL(){}进行返回,同时要把拼接好的SQL语句通过toString()转换成String类型,例子:查询:public class UserProvide
Mybatis动态注解主要是通过org.apache.ibatis.jdbc.SQL这个类实现,通过return new SQL(){}进行返回,同时要把 拼接好的SQL语句通过toString()转换成String类型,例子: 查询: public class UserProvider { public String SelectWithSQL(final Mapparam){ 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(); }