Mybatis之#{}与${}的区别使用详解 Mybatis是一款流行的持久层框架,它提供了两种方式来从数据库中获取数据,即#{}和${}。这两种方式都可以用来从数据库中获取数据,但是它们有着不同的使用场景和优缺点。 #{}的使用 #{}是Mybatis中的一种占位符,用于将参数传递给SQL语句。在SQL语句中,#{}将被替换为一个问号(?),以便防止SQL注入。例如,在以下示例代码中,#{}将被替换为一个问号: ```sql <select id="selectEmployeeByCondition2" resultMap="empResultMap" databaseId="mysql"> select * from t_emp WHERE emp_id=#{id} and emp_name=#{name} </select> ``` 在Java查询代码中,参数将被传递给SQL语句: ```java @Test public void testSelect() { InputStream resourceAsStream = ConfigTest.class.getResourceAsStream("../classes/mybatis-config.xml"); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream); SqlSession sqlSession = sqlSessionFactory.openSession(); EmployeeMapper mapper2 = sqlSession.getMapper(EmployeeMapper.class); Employee employee2 = mapper2.selectEmployeeByCondition2(1, "xiaohong"); System.out.println(employee2); } ``` 结果显示,#{}将被替换为一个问号,参数将被传递给SQL语句: ``` ==> Preparing: select * from t_emp WHERE emp_id=? and emp_name=? ==> Parameters: 1, xiaohong(String) ``` ${}的使用 ${}是Mybatis中的一种字符串替换符,用于将参数传递给SQL语句。在SQL语句中,${}将被直接替换为参数的值。例如,在以下示例代码中,${}将被直接替换为参数的值: ```sql <select id="selectOrderByCondition" resultMap="orderResultMap" databaseId="mysql"> select * from t_order_${createYM} WHERE DATE_FORMAT(create_date,'%Y%m')=${createYM} </select> ``` 在这种情况下,${}将被直接替换为参数的值,而不是使用占位符。 何时使用#{},何时使用${} 在实际开发中,我们需要根据不同的场景选择使用#{}}还是${}。如果我们需要防止SQL注入,应该使用#{}};如果我们需要将参数直接传递给SQL语句,可以使用${}。 例如,在某电商系统的订单表数据量太庞大,不得不分表来保存数据。在这种情况下,我们可以使用${}来拼装原生SQL语句,例如: ```sql <select id="selectOrderByCondition" resultMap="orderResultMap" databaseId="mysql"> select * from t_order_${createYM} WHERE DATE_FORMAT(create_date,'%Y%m')=${createYM} </select> ``` 因此,在选择使用#{}}还是${}时,我们需要根据实际情况进行选择,以确保数据的安全性和查询的效率。
- 内酷少女2023-06-11erator生成代码的文章,你需要继续写下去吗?
- 粉丝: 6
- 资源: 968
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于SimPy和贝叶斯优化的流程仿真系统.zip
- (源码)基于Java Web的个人信息管理系统.zip
- (源码)基于C++和OTL4的PostgreSQL数据库连接系统.zip
- (源码)基于ESP32和AWS IoT Core的室内温湿度监测系统.zip
- (源码)基于Arduino的I2C协议交通灯模拟系统.zip
- coco.names 文件
- (源码)基于Spring Boot和Vue的房屋租赁管理系统.zip
- (源码)基于Android的饭店点菜系统.zip
- (源码)基于Android平台的权限管理系统.zip
- (源码)基于CC++和wxWidgets框架的LEGO模型火车控制系统.zip