在Mybatis中,在查询结果集中,单个对象的封装已经远远不能满足业务的要求,于是,可以使用ResultMap: 如果在ResultMap中未使用到<association />标签,就是子对象结果映射,你可以不必将一级对象的属性一一映射,也可以完成结果集的自动填充! 当然,如果在ResultMap中使用到<association />标签,那每个实体字段和表字段必须对应,否则值为空或默认值! <!-- 映射ActivityResultMap --> <resultMap type="Activity" id="ActivityresultMap"> <result property="id" column="id"/> <result property="bid" column="bid"/> <result property="cid" column="cid"/> <result property="activity_name" column="activity_name"/> <result property="award_rate" column="award_rate"/> <result property="activity_desc" column="activity_desc"/> <result property="activity_list_img" column="activity_list_img"/> <result property="activity_detail_img" column="activity_detail_img"/> <result property="start_time" column="start_time"/> <result property="end_time" column="end_time"/> <result property="activity_type" column="activity_type"/> <result property="activity_state" column="activity_state"/> <result property="activity_url" column="activity_url"/> <result property="activity_rule" column="activity_rule"/> <result property="name" column="name"/> <result property="award_time_astrict" column="award_time_astrict"/> <result property="award_start_time" column="award_start_time"/> <result property="award_end_time" column="award_end_time"/> <result property="personal_img" column="personal_img"/> <result property="theme_img" column="theme_img"/> <result property="count_join" column="count_join"/> <result property="serial_num_count" column="serial_num_count"/> <result property="usable_count" column="usable_count"/> <association property="bankInfo" javaType="BankInfo"> <result property="bank_name" column="bank_name"/> </association> <association property="card" javaType="CreditCard"> <result property="card_name" column="card_name"/> </association> <association property="activitype" javaType="ActivityType"> <result property="type_name" column="type_name"/> </association> </resultMap> 在插入数据时,可以使用<selectKey />标签将产生的自增ID返回出来,当然,ID将自动封装到对象的ID字段中,而并非你方法的返回类型 int 中(当时就被这个坑了很久): 在其中MySQL是这样子的,它的Order属性为After,表示先执行插入语句,然后在获得ID值: <insert id="saveActivity" parameterType="Activity" keyProperty="id" keyColumn="id"> insert into kk_activity(bid,cid,activity_name,award_rate,activity_desc,activity_list_img,activity_detail_img,start_time,end_time,activity_type,activity_state,activity_url,activity_rule,name,award_time_astrict,award_start_time,award_end_time,personal_img,theme_img,count_join) values(#{bid},#{cid},#{activity_name},#{award_rate},#{activity_desc},#{activity_list_img},#{activity_detail_img},#{start_time},#{end_time},#{activity_type},#{activity_state},#{activity_url},#{activity_rule},#{name},#{award_time_astrict},#{award_start_time},#{award_end_time},#{personal_img},#{theme_img},#{count_join}) <selectKey keyProperty="id" resultType="java.lang.Integer" order="AFTER"> select LAST_INSERT_ID() </selectKey> </insert> 而在 Oracle 中,因为ID自增有sequance (序列)产生,则需这样:order="BEFORE",先获得ID值,然后进行插入: 在Mappler.java 的抽象方法中,如果有多个参数,你可以使用@Param()注解: public List<Activity> getActivityByPage(@Param(value="page")UIPage page, @Param(value="activity")Activity activity); 在Mapper.xml中,你可以使用ONGL表达式,也可以使用EL表达式,是不是很方便呢! 如果你想有程序来组装你想要的SQL,然后由Mybatis执行,你大可这样做: 接口方法: public HashMap<String, Object> getOrderCardInfoBySQL(@Param(value="excusql")String excusql); 在Mapper.xml 文件映射: <select id="getOrderCardInfoBySQL" resultType="map"> ${excusql} </select> 是不是很简单呢,如果有不懂,可以去参考Mybatis文档,也可以给我留言哦..