需求:连接数据库以及对数据库做更快捷的操作
思路:利用mybatis封装的方法进行数据库的操作
步骤:
1、导入jar包
2、写连接数据库用的配置文件
3、获取SqlSessionFactory对象,
4、写实体映射文件
映射文件格式:必须要有头文件和命名空间
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 配置命名空间:一般为映射文件的路径 -->
<mapper namespace="cn.banwxf.mybatis.bean.mymappertable">
每条sql操作语句id必须在该文件中唯一
注意:如果结果类型为resultType则实体类属性必须和“结果集”字段一致
如果结果类型为resultMap则需要单独适配,这个属性极大的提升了mybatis的灵活性
格式:主键属性property指的是实体类中的属性,column指的是结果集中的字段(包括别名)
<id property="id" column="ID" />
普通属性
<!-- 可以不全写,这是为了匹配实体类中的属性,也可以将变动后的结果集字段和实体类对应,便于维护 -->
<result property="id" column="ID" />
<result property="name" column="NAME" />
5、在java代码中调用映射文件
获取SqlSession对象 sqlSession = sessionFac.openSession();
需要注意的是:mybatis是基于JDBC封装的,所以不自动提交事务。需要程序员手动提交事务
sqlSession.commit();
映射规则:命名空间+“.”+id
代码:
动态sql:
作用:用于动态的拼接sql这样的设计,更适合用户的操作。
<select id="selectWhere" resultType="int">
select *
from mytable
<where>
<if test="id!=null">id=#{id}</if>
<if test="name!=null">name=#{name}</if>
</where>
</select>
<update id="update" parameterType="cn.banwxf.mybatis.bean.MyTable">
update mytable
<set>
<if test="name!=null">name =#{name}</if>
</set>
<!-- 注意一定要写where条件 -->
where id=#{id}
</update>
等等。
拓展:
1. hibernate和mybatis区别
Hibernate,java面向对象盛行时期,将整个开发设计过程全部面向对象开发,全ORM。
iBatis,维持原有的编程方式,前面部分按面向对象思考和设计,持久层时使用sql语句,面向过程。
1)Hibernate 底层仍然使用sql,将hql语句转为sql。Sql无法优化
2) Hibernate通过反射,性能很低
3) Ibatis就是基于jdbc轻量级封装,还是使用sql。性能比较高。半ORM
注意:
多条件查询,如果使用EntityBean,做查询时,一种查询条件就得写一个sql。SessionBean新增,修改,删除交给EntityBean;多条件查询交给SessionBean。