Mybatis
1、 mybatis和Hibernate的区别
mybatis是半自动的,Hibernate是全自动的
Hibernate可以完全通过对象关系模型实现对数据库的操作,拥有完整的javabean对象和数据库映射结构,自动生成sql语句。
Mybaits只是基于字段的映射,对象数据以及对象实际关系仍然需要手动的处理。
正因为如此,mybatis比Hibernate更关系细节
mybatis的sql都是写在xml配置文件当中,而Hibernate的sql很多都是自动生成,并不能直接控制,如果Hibernate要强行自己写sql,在开发模式上面与orm不同;当然Hibernate也可以使用hql,对细节进行优化,但是hql在功能上不及sql强大。
Hibernate比mybatis的移植性髙
Hibernate利用他强大的映射结构和hql语句,大大降低了与数据库的耦合性;而mybatis需要手写sql,与数据库的耦合性直接关系到程序员sql的写法,如果sql不具有通用性的话,移植性就会大大降低
Hibernate适用的项目:OA项目,ERP项目
Mybatis适用的项目:电商项目
2、 mybatis使用@param注解
当以下面的方式进行写SQL语句时:
@Select("select column fromtable where userid = #{userid}")
public int selectColumn(int userid);
当你使用了使用@Param注解来声明参数时,如果使用 #{} 或 ${} 的方式都可以。
@Select("select column fromtable where userid = ${userid} ")
public int selectColumn(@Param("userid") int userid);
当你不使用@Param注解来声明参数时,必须使用使用 #{}方式。如果使用 ${} 的方式,会报错。
@Select("select column fromtable where userid = ${userid} ")
public int selectColumn(@Param("userid") int userid);
更多内容请关注微信公众号“外里科技”