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(); }}
如果这篇文章对你有所帮助,记得点赞,评论,转发哟,谢谢!