mybatis使用及动态sql

来源:互联网 发布:苹果系统办公软件 编辑:程序博客网 时间:2024/06/07 13:56

需求:连接数据库以及对数据库做更快捷的操作

思路:利用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。

0 0