mybatis中$和井号区别是什么?mybatis有什么特征?

阳光 2022-03-28 22:19:36 java常见问答 14322

MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。它可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO映射成数据库中的记录。那mybatis中$和井号区别是什么?下面来我们就来给大家讲解一下。

1.#{变量名}可以进行预编译、类型匹配等操作,#{变量名}会转化为jdbc的类型。

select * from tablename where id = #{id}

假设id的值为12,其中如果数据库字段id为字符型,那么#{id}表示的就是'12',如果id为整型,那么id就是12,并且MyBatis会将上面SQL语句转化为jdbc的select * from tablename where id=?,把?参数设置为id的值。

2.${变量名}不进行数据类型匹配,直接替换。

select * from tablename where id = ${id}

如果字段id为整型,sql语句就不会出错,但是如果字段id为字符型, 那么sql语句应该写成select * from table where id = '${id}'。

3.#方式能够很大程度防止sql注入。

4.$方式无法方式sql注入。

5.$方式一般用于传入数据库对象,例如传入表名。

6.尽量多用#方式,少用$方式。

mybatis有什么特征?

1.简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件。易于学习,易于使用。通过文档和源代码,可以比较完全的掌握它的设计思路和实现。

2.灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。

3.解除sql与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。

4.提供映射标签,支持对象与数据库的orm字段关系映射。

5.提供对象关系映射标签,支持对象关系组建维护。

6.提供xml标签,支持编写动态sql。

总之MyBatis 是一款优秀的持久层框架,没有任何的第三方依赖,使用它能够使代码更加安全,提高代码的可维护性!最后大家如果想要了解更多java架构师知识,敬请关注奇Q工具网。

推荐阅读:

Java程序员如何进行笔试面试?java程序员笔试面试宝典

git客户端怎么导入git项目?git如何进行配置?

Java内存溢出是异常吗?Java常见内存溢出有哪些?