Mybatis
部分一
1)解析xml文件
InputStream is=Resources.getResourceAsStream("mybatis.xml");
2)获取SqlSessionFactory对象
SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(is);
3)获取session对象
Session session=factory.openSession();
4)执行操作
a)使用SqlSession对象执行对数据库的增删改查
List<Dept> list=session.selectList("namespace.selectAll()");
b)使用mapper代理,执行对数据库的增删改查
DeptMapper mapper=session.getMapper(Mapper.class);
5)提交session
session.commit();
6)关闭session
session.close();
部分二
Sql语句的动态拼接
1)if标签(test相当于循环条件 param1是参数,必须写成param1格式)
<if test="param1!=null and param1!=''">
and ename=#{param1}
</if>
2)where标签(相当于的where条件判断)
<where>
<if test="param1!=null and param2!=''">
ename=#{param1}
</if>
</where>
3)set标签(用于数据库更新操作, set关键字会自动的增加set关键字,并且会把最后一个逗号去掉)
<set>
<if test="dname!=null and dname!=''">
dname=#{dname},
</if>
4)trim标签(用于给语句添加和删除前后缀 )
添加前缀:prefix=""
删除前缀:prefixOverrides
添加后缀:suffix=""
删除后缀:suffixOverrides
5)foreach标签(collection :可选list或array;open :以...开始;close:以...结束;separator :分隔符;item:迭代主量)
<foreach collection="list" open="(" close=")" separator="," item="ite"> #{ite}
</foreach>
6)bind标签(对比有无bind方式的区别)
a)无bind方式
<if test="empname!=null and empname!=''">
ename like '%${empname}%'
</if>
b)有bind方式
<if test="empname!=null and empname!=''">
<bind name="aaa" value="'%'+empname+'%'"></bind>
ename like #{aaa}
</if>
7&8)sql&include标签
<select id="selectAll7" resultType="emp2">
<include refid="testsql"></include>
<where>
<if test="empname!=null and empname!=''">
<bind name="aaa" value="'%'+empname+'%'"></bind>
ename like #{aaa}
</if>
</where>
</select>
<sql id="testsql">
select * from emp
</sql>
9)choose标签(相当于if...else if...)
<choose>
<when test="param1!=null and param1!=''">
ename=#{param1}
</when>
<when test="param2!=null and param2!=''">
job=#{param2}
</when>
<otherwise>
1=1
</otherwise>
</choose>