Mybatis写Mapper文件时,表明作为参数传递怎么写?

原代码如下:

 mapper文件:
      <!-- 查询1条记录 -->
    <select id="selectTransactionInfo" resultType="entity.TransactionInfo">
        select * from sh000099 where tradeDate = #{tradeDate}
    </select>

dao:
 public TransactionInfo getInfo(String tradeDate) {
        SqlSession session = MyBatisUtil.getSession();
        TransactionInfo info = session.selectOne("entity.TransactionInfoMapper.selectTransactionInfo", tradeDate);
        session.close();
        return info;
    }

但是我有很多张表,每张表都要执行crud,也就是说表名称需要作为参数传递,mapper文件和dao文件怎么修改?

虽然我搞不懂为什么你要把表名传进去,这样返回值你都无法确定,通常情况下都是一个mapper对应一个表
但是你说的确实是有方法可以解决的,表名作为参数传进去,在mapper的sql中使用${}去承接
举例:

public List<Object> selectByTable(@Param("tableName") String tableName);
<select id="selectByTable" resultType="java.lang.Object">
        select * from ${tableName} 
    </select>

如果表结构都一致的的话,可以使用myabtis-plus的DynamicTableNameParser 动态表名,具体可以看看这个用法

面试有时候会问 mybatis 中 # 和 $ 的区别

把表名放在参数上传进去就行呀取表名不要用#号,#号会给你转成字符串,就没法查,要用$符号