mybatis 传入动态表名

本文介绍如何在MyBatis中使用动态表名进行数据查询。通过对比#{recordAddr}

  由于项目的需要,表名要动态的传入,用的是mybatis

<select id="getCount" resultType="int" parameterType="logLoginInfoModel">
        SELECT COUNT(*) FROM  #{recordAddr}
    </select>

用 #{recordAddr} 一直没有成功,因为 recordAddr 是一个字符串,传进的参数里面多了一个'' 单引号,改为${recordAddr}才行

MyBatis 的 XML 配置文件中实现动态设置表,主要依赖于 MyBatis 提供的动态 SQL 功能。通过在 SQL 语句中使用 `${}` 表达式,可以将传入的表参数动态地拼接到 SQL 语句中,从而实现动态表的设置。 在 Mapper 接口中,定义一个方法,并通过 `@Param` 注解传递表参数。例如: ```java List<User> getUserList(@Param("tableName") String tableName); ``` 在对应的 XML 映射文件中,使用 `${tableName}` 来引用传入的表参数。例如: ```xml <select id="getUserList" resultType="User"> select * from ${tableName} </select> ``` 这种方式允许根据传入的参数动态地改变 SQL 语句中的表,从而满足不同业务场景下的需求。需要注意的是,由于 `${}` 是直接拼接字符串,因此在使用时需要确保传入的参数是安全的,以防止 SQL 注入攻击。 测试时,可以通过调用接口方法并传入具体的表参数来验证动态表的功能是否正常[^2]。 ### 示例代码 ```java public interface SpecialSQLMapper { List<User> getUserList(@Param("tableName") String tableName); } ``` 对应的 XML 映射文件: ```xml <mapper namespace="com.atguigu.mybatis.mapper.SpecialSQLMapper"> <select id="getUserList" resultType="User"> select * from ${tableName} </select> </mapper> ``` 测试代码: ```java @Test public void testGetUserList() { SqlSession sqlSession = SqlSessionUtil.getSqlSession(); SpecialSQLMapper mapper = sqlSession.getMapper(SpecialSQLMapper.class); List<User> list = mapper.getUserList("t_user"); list.forEach(System.out::println); } ``` 通过上述方法,可以有效地在 MyBatis 的 XML 配置中实现动态表的设置。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值