> 文档中心 > mybatis的多表连查sql语句怎么写,如何获得多表连查的数据

mybatis的多表连查sql语句怎么写,如何获得多表连查的数据


mybatis的sql语句呢是可以自动生成的,用起来也非常的方便 ,但是有些操作是需要自己去写sql语句,那就是多表连查,那怎么去写呢?多张表的数据用什么接收呢?

mybatis是一个简单易学,灵活的框架。提供映射标签,解除sql与程序代码的耦合,提供对象关系映射标签,提供xml标签,支持编写动态sql等。

两表连查sql语句

列:select p.position_id,p.name,d.dept_id,d.dept_name from aoa_position p left join aoa_dept d on p.deptid = d.dept_id;

注意:以下是用整合ssm+springboot操作,但是xml中的操作并不影响您mybatis的单独使用

方式一:

xml

<!-- 定义返回结果集   AoaPosition类中含有dept对象 -->  <resultMap id="positions" type="com.ymh.entity.AoaPosition">    <id column="position_id" property="positionId" jdbcType="BIGINT" />    <result column="name" property="name" jdbcType="VARCHAR" />    <association property="dept" javaType="com.ymh.entity.AoaDept">      <result column="dept_id" property="deptId" jdbcType="BIGINT" />      <result column="dept_name" property="deptName" jdbcType="VARCHAR" />    </association>  </resultMap><!--  职位表和部门表的两表连查  -->  <select id="selectPositions" resultMap="positions"> select     p.position_id,p.name,d.dept_id,d.dept_name from     aoa_position p left join     aoa_dept d on     p.deptid = d.dept_id;  </select>

mapper

public interface AoaPositionMapper {//方法名要和xml中的id值要一样List<AoaPosition> selectPositions();}

service

public interface PositionService {/**     * 查询职位信息以及部门信息     * */    List<AoaPosition> selectPosition();}@Servicepublic class PositionServiceImpl implements PositionService {    @Resource    private AoaPositionMapper positionMapper;    @Override    public List<AoaPosition> selectPosition() { return positionMapper.selectPositions();    }}

controller

@RestController@RequestMapping("position")public class PositionController {    @Autowired    private PositionService positionService;    @GetMapping("selectPosition")    public List<AoaPosition> selectPosition(){ return positionService.selectPosition();    }}

方式二:map集合

假设我们要的数据只有几列值,而多表连查的数据有十几列的数据,那我们可以使用map集合储存你想要的数据

xml

<!--  职位表和部门表的两表连查 这时候我们要使用这个属性:resultType="hashmap"  --><select id="selectPositions" resultType="hashmap"> select     p.position_id,p.name,d.dept_id,d.dept_name from     aoa_position p left join     aoa_dept d on     p.deptid = d.dept_id;  </select>

后面的操作基本差不多,只需要把返回值改为:List<Map>

mapper

public interface AoaPositionMapper {//方法名要和xml中的id值要一样,返回值就是list集合中储存的map集合List<Map<String, Object>> selectPositions();}

service

public interface PositionService {/**     * 查询职位信息以及部门信息     * */    List<Map<String, Object>> selectPosition();}@Servicepublic class PositionServiceImpl implements PositionService {    @Resource    private AoaPositionMapper positionMapper;    @Override    public List<Map<String, Object>> selectPosition() { return positionMapper.selectPositions();    }}

controller

@RestController@RequestMapping("position")public class PositionController {    @Autowired    private PositionService positionService;    @GetMapping("selectPosition")    public List<Map<String, Object>> selectPosition(){ return positionService.selectPosition();    }}

如果这篇文章对你有所帮助,记得点赞,评论,转发哟,谢谢!