controller层次
参数是这个实体内容的一部分,一般是搜索框。
引入需要使用的service层的变量
@Autowired
private ThemesBaseService themesBaseService;
/**
* @param entity StreamLogTableEntity.
* @return Message.
*/
@PostMapping(value = "log-table")
public Message getStreamLogTableData(StreamLogTableEntity entity) {
return super.buildRestResult(themesBaseService.getStreamLogTableData(entity));
}
Service层
Map<K,V>,K是key值的类型,V是value的类型。
public interface ThemesBaseService {
/**
* 返回的是map类型,返回类型需要在map中定义?
* @param entity StreamLogTableEntity.
* @return map.
*/
Map<String, Object> getStreamLogTableData(StreamLogTableEntity entity);
}
servicempl层
先在这里引入mapper中的东西
@Autowired
private ThemesBaseMapper themesBaseMapper;
这里面是对service中的数据进行一系列的操作,对这个数据进行一系列的整合。
/**
* @param entity StreamLogTableEntity.
* @return map.
*/
@Override
public Map<String, Object> getStreamLogTableData(StreamLogTableEntity entity) {
Map<String, Object> result = new HashMap<>();
result.put("content", themesBaseMapper.getStreamLogTableData(entity));
result.put("total", themesBaseMapper.getStreamLogDataTotal(entity));
return result;
}
Mapper层次
返回类型 函数名(参数);
List<StreamLogTableEntity> getStreamLogTableData(StreamLogTableEntity entity); long getStreamLogTableData(StreamLogTableEntity entity) list<>:指的是返回值为list列表;long:指的是返回值为long类型
- 这是获取总数数据的代码
/**
* @param entity StreamLogTableEntity.
* @return long.
*/
long getStreamLogDataTotal(StreamLogTableEntity entity);
- 这是表格数据的代码
- 表格代码需要service去限制一下,因为比较多的处理过程
/**
* @param entity StreamLogTableEntity.
* @return list.
*/
List<StreamLogTableEntity> getStreamLogTableData(StreamLogTableEntity entity);
XML文件:
一般返回值的变量名字对应要先在resultMap中显示出来
<resultMap id="streamLogTable" type="cn.cas.common.usoc.property.entity.trafficlog.StreamLogTableEntity">
<result column="c_database" property="cDataBase"/>
<result column="c_tablename" property="cTablename"/>
<result column="c_data_desc" property="cDataDesc"/>
<result column="c_sdate" property="cSdate"/>
</resultMap>
id指向的是Mapper文件中的函数
既需要返回值的类型,也需要参数的类型
- 下面这个是查询表格数据的代码
<select id="getStreamLogTableData" resultMap="streamLogTable" parameterType="cn.cas.common.usoc.property.entity.trafficlog.StreamLogTableEntity" >
select * from t_traffic_log_subject_overview
where 1=1
<if test="cTablename != '' and cTablename != null">
and c_data_desc like concat("%",#{cTablename},"%")
</if>
<if test="startTime != '' and startTime != null">
and c_mdate >= #{startTime}
</if>
<if test="endTime != '' and endTime != null">
and #{endTime} >= c_mdate
</if>
order by c_mdate desc
limit #{page}, #{size}
</select>
- 下面这个是查询总数会用到的代码,因为这个是和上面那个一样的查询条件,所以基本一样
<select id="getStreamLogDataTotal" resultType="java.lang.Long" parameterType="cn.cas.common.usoc.property.entity.trafficlog.StreamLogTableEntity" >
select count(*) from t_traffic_log_subject_overview
where 1=1
<if test="cTablename != '' and cTablename != null">
and c_data_desc like concat("%",#{cTablename},"%")
</if>
<if test="startTime != '' and startTime != null">
and c_mdate >= #{startTime}
</if>
<if test="endTime != '' and endTime != null">
and #{endTime} >= c_mdate
</if>
</select>
这篇博客详细介绍了如何在Spring MVC框架下实现数据查询及分页功能。从Controller层的接口定义,到Service层的方法实现,再到Mapper层的SQL编写,整个流程清晰明了。关键点包括使用`@Autowired`注解注入Service,Service中通过Mapper获取数据并组装成Map返回,Mapper层通过`<if>`标签处理动态SQL,以及XML文件中的`resultMap`定义。博客还强调了查询条件的处理和分页限制的重要性。
2240

被折叠的 条评论
为什么被折叠?



