Mybatis是目前国内最流行的半ORM框架,但是一般初级的使用都是使用pojo层实体类解析,若项目接口过多的情况下会造成实体类过多等问题。
以下介绍一种使用java.lang.map进行mybatis的多类型参数以及多类型输出的方法
首先数据库设计以及预备数据
Mapper.java接口
public List<Map<String,Object>> findByRowBounds(Map<String,Object> parameterMap, RowBounds rowBounds);
Mapper.xml中的mapper标签
<select id="findByRowBounds" parameterType="map" resultType="map">
select id,role_name as roleName,note,code from t_role
where role_name like concat('%',#{roleName},'%')
and note like concat('%',#{note},'%')
</select>
</mapper>
Mianjava.java程序
sqlSeesion = SqlSessionFactoryUtils.openSession();
RoleMapper roleMapper = sqlSeesion.getMapper(RoleMapper.class);
Map<String,Object> parameterMap= new HashMap<String,Object>();
parameterMap.put("roleName","1");
parameterMap.put("note","1");
RowBounds rowBounds = new RowBounds(0,20);
List<Map<String,Object>> roles = roleMapper.findByRowBounds(parameterMap,rowBounds);
for(Map<String,Object> role:roles)
{
System.out.println("roleName:"+role.get("roleName")+" note"+role.get("note")+" code"+role.get("code"));
}
操作结果:
DEBUG 2019-05-18 21:56:43,369 org.apache.ibatis.logging.jdbc.BaseJdbcLogger: ==> Parameters: 1(String), 1(String)
DEBUG 2019-05-18 21:56:43,409 org.apache.ibatis.logging.jdbc.BaseJdbcLogger: <== Total: 3
roleName:1 note1 code1
roleName:1a1 note1a1 code2
roleName:1a2 note1a2 code3
DEBUG 2019-05-18 21:56:43,411 org.apache.ibatis.transaction.jdbc.JdbcTransaction: Resetting autocommit to true on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@33d512c1]
DEBUG 2019-05-18 21:56:43,412 org.apache.ibatis.transaction.jdbc.JdbcTransaction: Closing