哪个cms做企业网站好,公众号怎么做文章,吉林网站建设价格,捕鱼游戏网站制作模板若用MyBatis注解方式写sql#xff0c;又想要XML写法的判断入参拼接条件#xff0c;可以通过SelectProvider方式实现。
前些天发现了一个巨牛的人工智能学习网站#xff0c;通俗易懂#xff0c;风趣幽默#xff0c;忍不住分享一下给大家。点击跳转到教程。
新建Provider …
若用MyBatis注解方式写sql又想要XML写法的判断入参拼接条件可以通过SelectProvider方式实现。
前些天发现了一个巨牛的人工智能学习网站通俗易懂风趣幽默忍不住分享一下给大家。点击跳转到教程。
新建Provider
public class RateProvider {private final String table_name rate_finish;public String getFinishRate(MapString, Object para) {String sql SELECT create_at FROM rate_finish WHERE 11 ;if (para.get(deviceType) ! null ) {sql AND device_type para.get(deviceType);} sql ORDER BY homework_type;return sql;}
}这里的 para 可以通过 key 方式或者 index 方式获取对应参数。
新建Entity
public class RateFinish extends AbstractModel {private int id;private String deviceType;private String level;private String finishCount;private String count;private String homeworkType;private String createAt;编写 Mapper 接口使用注解 SelectProvider(type RateProvider.class, method getFinishRate)Results({Result(property homeworkType, column homework_type),Result(property deviceType, column device_type),Result(property level, column level),Result(property finishCount, column finish_count),Result(property count, column count),Result(property createAt, column create_at)})ListRateFinish getFinishRate(Param(deviceType) String deviceType;
说明
注解中的参数type参数指定的Class类必须要能够通过无参的构造函数来初始化method参数指定的方法必须是public的返回值必须为String可以为static。
例二 ResultMap注解用于从查询结果集RecordSet中取数据然后拼装实体bean。
public interface UserMapper {SelectProvider(type SqlProvider.class, method selectUser)ResultMap(userMap)public User getUser(long userId);
}
public class SqlProvider {public String selectUser(long userId){SELECT(id, name, email);FROM(USER);WHERE(ID #{userId});}
}
public class SqlProvider {public String deleteUser(int id) {return new SQL() {{DELETE_FROM(USER);WHERE(ID #{id});}}.toString();}
} 上例中定义了一个 Mapper 接口其中定义了一个 getUser 方法这个方法根据用户 id 来获取用户信息并返回相应的 User。而对应的 SQL 语句则写在 SqlProvider 类中。
例三
1一个参数的SelectProvide方法 若在getUser方法中userId使用了Param注解那么selectUser方法须以MapString, Object为参数UserMapper.java
SelectProvider(type SqlProvider.class, method selectUser2)
ResultMap(userMap)
public User getUser(Param(userId) long userId);
SqlProvider.java
public String selectUser(MapString, Object para) {return select * from user where userId para.get(userId);
}
2多参数的SelectProvide方法 以 MapString, Object 为参数 若有 Param注解则参数在 Map中以 Param的值为 key如下例中的 userId 若参数未使用 Param注解则参数在 Map中以参数的顺序为 key如下例中的 password
UserMapper.java SelectProvider(type SqlProvider.class, method selectUserCheck)ResultMap(userMap)public User getUserCheck(Param(userId) long Id, String password);
SqlProvider.java
public String selectUserCheck(MapString, Object para) {return select * from user where userId para.get(userId) and password para.get(1) ;
} 注意在Mapper接口和SelectProvide方法类中不要使用重载也就是说不要使用方法名相同参数不同的方法 。 转自
https://my.oschina.net/u/1000241/blog/1608635?nocache1541480270547
http://www.cnblogs.com/JoeyWong/p/9457118.html
https://www.cnblogs.com/he-px/p/7134524.html