在开发的时候可能会需要以实际命名的日志表,然后按照日期来查询表的内容
我们只需要在sql语句中将表的名字作为一个参数传进去即可
mapper文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.sysmg.biz.dao.FishlogMapper">
<resultMap id="BaseResultMap" type="com.sysmg.biz.domain.Fishlog">
<!--
WARNING - @mbg.generated
-->
<id column="ID" jdbcType="INTEGER" property="id" />
<result column="UserID" jdbcType="INTEGER" property="userid" />
<result column="TypeID" jdbcType="INTEGER" property="typeid" />
<result column="TypeSum" jdbcType="INTEGER" property="typesum" />
<result column="Param" jdbcType="INTEGER" property="param" />
<result column="Info" jdbcType="VARCHAR" property="info" />
<result column="LogTime" jdbcType="TIMESTAMP" property="logtime" />
</resultMap>
<select id="getFishLogs" resultType="java.util.Map" statementType="STATEMENT" >
select * from ${tableName}
</select>
</mapper>
public interface FishlogMapper extends MyMapper<Fishlog> {
List<Map<String,Object>> getFishLogs(@Param("tableName") String tableName);
}
service
public List<Map<String, Object>> getFishLogs(String tableName) {
// TODO Auto-generated method stub
return mapper.getFishLogs("fishlog"+tableName);
}
controller
public List<Map<String, Object>> test(String tableName) {
List<Map<String, Object>> fishLogs = fishlogService.getFishLogs(tableName);
System.out.println(fishLogs.size());
return fishLogs;
}
当然也可以将字段集合作为一个参数传进去来动态查询
<select id="get" resultType="java.util.Map" statementType="STATEMENT" >
select ${fields} from ${tableName}
</select>
比较简单,希望对需要的人有帮助