一、序言
最近一直用mybatis做开发,以前用过hibernate,能感受到一些它们在使用上的区别,不过总想抽出时间来好好比较比较弄弄清楚它们各自的优劣,以便更好进行选择和深入的了解。
网上也看了很多资料,结合自己的使用体会,粗率地概括和总结了一下,以供大家参考。
二、具体运用上的不同
1、所需的jar包
Mybatis:只需要3个(mybatis-3.1.1.jar,mybatis-3.1.1-javadoc.jar,mybatis-3.1.1-sources.jar)
Hibernate:根据功能不同大概需要十几个
2、映射关系
Mybatis:实体类与sql之间的映射
Hibernate:实体类与数据库之间隐射
3、配置文件
Student:
属性:int id,String name,String password;
方法配置:
getStudentByName; //通过name查找
getStudentById //通过id查找
insertStudent //添加Student
updateStudent //更改Student
deleteStudent //通过id删除Student
deleteStudentById //通过name伤处Student
selectStudentmohu //通过name模糊查询
Mybatis:
总配置文件:mybatisConfig.xml
<configuration>
<typeAliases>
<typeAlias alias="Student" type="com.niit.model.Student"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/niit/model/StudentMap.xml"/>
</mappers>
</configuration>
l 实体类映射文件:StudentMap.xml(一个或多个)
<mapper namespace="com.niit.model.StudentMap">
<select id="getStudentByName" resultType="Student"
parameterType="string">
select * from student where name=#{name}
</select>
<select id="getStudentById" resultType="Student" parameterType="int">
select * from student where id=#{id}
</select>
<insert id="insertStudent" parameterType="Student">
insert into student(id, name, password) value(#{id}, #{name}, #{password})
</insert>
<update id="updateStudent" parameterType="Student">
update student set name=#{name}, password=#{password} where id=#{id}
</update>