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();
}
@Service
public 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<String, Object>>
mapper
public interface AoaPositionMapper {
//方法名要和xml中的id值要一样,返回值就是list集合中储存的map集合
List<Map<String, Object>> selectPositions();
}
service
public interface PositionService {
/**
* 查询职位信息以及部门信息
* */
List<Map<String, Object>> selectPosition();
}
@Service
public 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();
}
}
如果这篇文章对你有所帮助,记得点赞,评论,转发哟,谢谢!