1、自定义provider类构造sql语句,type 属性用于指定获取sql语句的指定类,method 属性用于指定类中要执行获取sql语句的方法,在xxxProvider类中必须使用Map对象接收参数或者是当前类对象作为参数。
@SelectProvider(type=xxxx.class,method=”xxxx”)
public class SearchCoursesSearch {
private String userUid;
private String categoryCode;
private String courseName;
private int pageNo;
private int pageSize;
private String type;
public String getSql(SearchCoursesSearch course){
StringBuffer sql=new StringBuffer();
//动态拼接sql
//返回拼接的sql
return sql.toString();
}
}
2、@ResultMap()注解
可以直接引用mapper.xml中的结果集id
或者是直接将参数拼接在注解里,参照mybatisAPI
@SelectProvider(type = SearchCoursesSearch.class,method = "getSql")
@ResultMap("CourseResultMap")
List<Course> searchCourses(SearchCoursesSearch course);
//对应的xml文件
<resultMap id="CourseResultMap" type="com.joydo.gfk.entity.Course">
<id property="courseId" column="course_id"></id>
<result property="courseName" column="course_name"></result>
<result property="level" column="level"></result>
<result property="courseDesc" column="course_desc"></result>
<result property="courseType" column="course_type"></result>
<result property="testId" column="test_id"></result>
<result property="requireStudyMinute" column="require_study_minute"></result>
<result property="favCnt" column="fav_cnt"></result>
<result property="courseStatus" column="course_status"></result>
<result property="mustLearn" column="must_learn"></result>
<result property="publishBy" column="publish_by"></result>
<result property="publishTime" column="publish_time"></result>
<result property="startTime" column="start_time"></result>
<result property="endTime" column="end_time"></result>
<result property="updateTime" column="update_time"></result>
<result property="h5IndexPage" column="h5_index_page"></result>
<result property="praise" column="praise"></result>
<result property="image" column="image"></result>
<result property="fav" column="fav"></result>
<result property="studyStatus" column="study_status"></result>
<result property="studyCnt" column="study_cnt"></result>
<result property="praiseCnt" column="praise_cnt"></result>
<collection property="userTest" ofType="UserTest">
<id property="testId" column="test_id"></id>
<result property="testStatus" column="test_status"></result>
</collection>
<collection property="userCourse" ofType="UserCourse">
<id property="courseId" column="course_id"></id>
<result property="fav" column="fav"></result>
<result property="studyStatus" column="study_status"></result>
<result property="elStatuyStatus" column="is_pass"></result>
</collection>
</resultMap>
3、mapper文件直接引用
/**
* @creater yfc
* @date 2019/05/08 16:26:33
* @describle
*/
@SelectProvider(type = SearchCourseLivesSearch.class,method = "getSql") //对应provider中自定义的sql
@ResultMap("CourseLiveResultMap") //对应mapper.xml文件的自定义集合
List<CourseLive>searchCourseLives(SearchCourseLivesSearch course);