Mybatis 映射关系

Mybatis的Mapper.xml中定义了对数据库的增删改查等sql操作语句。

这些语句中,既要对应数据库中各个表的字段,又要对应Java类中的属性,之前常常搞不清楚,刚刚在写项目的过程中,突然茅塞顿开。

结合实例:

UserTrackModel.java:

@Alias("userTrackModel")
public class UserTrackModel extends BaseModel {
    public static final String COND_USER_ID = "userId";
    
    private int userId;
    private Date dateStart;
    private Date dateEnd;
    private CompanyModel company;
    private String position;
    private String comment;
    
    ......(get\set)
}    

UserTrackMapper.java:

@Mapper
public interface UserTrackMapper {
    List<UserTrackModel> queryList(UserTrackModel userTrackModel);     
}

UserMapper.xml

<mapper namespace="com.hsys.mappers.UserTrackMapper">
    <resultMap id="companyResultMap" type="companyModel" >
        <id column="c_id" property="id"/>
        <result column="c_name" property="name"/>
    </resultMap>
    <resultMap id="userTrackResultMap" type="userTrackModel" >
        <id column="u_id" property="id"/>
        <result column="u_user_id" property="userId"/>
        <result column="u_date_start" property="dateStart"/>
        <result column="u_date_end" property="dateEnd"/>
        <result column="u_comment" property="comment"/>
        <result column="u_position" property="position"/>        
        <association property="company" resultMap="companyResultMap"/>
    </resultMap>
    
    <select id="queryList" resultMap="userTrackResultMap">
        select u.c_id as u_id,
            u.c_date_start as u_date_start,
            u.c_date_end as u_date_end,
            u.c_comment as u_comment,
            u.c_position as u_position,
            c.c_id as c_id,
            c.c_name as c_name
        from user_track_tbl as u
        left join company_tbl as c on u.c_company_id = c.c_id
        <where>
            <if test="cond.userId != null"></if>
                u.c_user_id = #{userId}
        </where>
    </select>

UserTrackService.java

@Service
public class UserTrackService {
    @Autowired
    private UserTrackMapper userTrackMapper;
    
    public List<UserTrackModel> queryList(UserTrackModel userTrackModel){
        return userTrackMapper.queryList(userTrackModel);
    }
    
    public List<UserTrackModel> queryByUid(int userId){
        UserTrackModel userTrack = new UserTrackModel();
        userTrack.setUserId(userId);
        userTrack.setCond(UserTrackModel.COND_USER_ID, userId);
        
        List<UserTrackModel> userTracks = queryList(userTrack);
        return userTracks;
    }
}

UserTrackBusiness.java

@Component
public class UserTrackBusiness {
    @Autowired
    private UserTrackService userTrackService;
    
    public List<UserTrackModel> queryList(UserTrackModel userTrackModel){
        return userTrackService.queryList(userTrackModel);
    }
        
}

 

posted on 2019-07-12 10:50  青柠锦鲤  阅读(134)  评论(0编辑  收藏  举报