google protobuf 实体类和java对象互转_MyBatis 封装Map,返回不同实体的集合对象

博文发布出发点:

  1.现在有一个需求,就是从100个表中获得任意表中的数据,按照正常的思维模式和处理方式,

    我们首先会创建100个实体类(累死!),然后通过resultType一一对应实体类,这种方式简直...

  2.我们不通过创建实体类,来获得一个表中的所有数据,或者部分数据的键值对形式的值,我们该怎么做?

那么我们下面将会用一种相对高效的方式来解决问题!

最初的想法,汇聚成了如下的代码

<Object> findStatisData();

但是这样写拿到的数据只有一列,这时为什么??sql语句都没有问题?
原因是,当我们的resultType写成一个实体类的时候,MyBatis首先会找这个实体类里面的字段,然后根据字段进行映射,
但是我们的Object对象它里面有字段吗???
当然是没有的,所以只能获得一个值。
-------------------------------------------------------------------
像这种想要返回实体类的东西我们还得借助Map<String,Object>,为什么呢?
String就相当于实体类里面的具体属性字段,而Object就是存储值的

所以我们的写法应该是这样的

/*
  Warning:
    这里边如果是要获取多个值的话就必须写成List<Map<String,Object>>
    如果要写成Map<String,Object>,它只会获取一条数据,如果你查询的是多条数据的话,还会报异常!!
*/
List<Map<String,Object>> findStatisData();

<mapper namespace="cn.arebirth.mapper.IncomeMapper">
    <select id="findStatisData" resultType="java.util.Map">
        select * from data
    </select>
</mapper>
这样的话我们就可以获得所有的字段名加值的lList集合嵌套Map的值了。

最终我们可以通过如下的方式,打印出所有的key(留给比较懵逼的同学看)

package 

f9258b0c80f64a3e782a6fc0055c1f65.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要生成Java对象,你需要先准备好一个`.proto`文件,并使用`protoc`命令来生成Java代码。首先,确保你已经安装了Protocol Buffers工具。你可以从官方网站下载最新版本的Protocol Buffers\[3\],然后按照以下步骤进行操作: 1. 下载并解压Protocol Buffers压缩包。 2. 进入解压后的目录,执行以下命令进行预编译和安装: ``` ./configure --prefix=/home/wangx/software/protobuf make make check make install ``` 这个过程可能需要一些时间。 3. 验证安装是否成功,执行以下命令: ``` cd /home/wangx/software/protobuf/bin ./protoc --version ``` 如果成功安装,你将看到类似于`libprotoc 3.6.1`的输出。 接下来,你需要准备一个`.proto`文件,该文件描述了你想要生成Java对象的结构。在准备好`.proto`文件后,使用`protoc`命令来生成Java代码。假设你的`.proto`文件名为`ProtoMsg.proto`,执行以下命令: ``` protoc --java_out=./ ProtoMsg.proto ``` 这将在当前目录下生成Java代码文件。 请注意,你可能还需要在`/etc/profile`文件中配置`PROTOBUF_HOME`和`PATH`变量,以便在任何位置都可以使用`protoc`命令\[2\]。 希望这些信息对你有帮助! #### 引用[.reference_title] - *1* *2* *3* [ProtoBuf文件生成Java对象](https://blog.csdn.net/weixin_43406151/article/details/126508396)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值