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工具网。
推荐阅读: