Mybatis流程图
SqlSessionFactory对象
可以理解为会话工厂,在整个项目中共享,是线程安全的。通过openSession方法创建SqlSession对象,该方法存在很多重载方式可以有参数可以无参数。
SqlSession
可以通过会话工厂产生,线程不安全。用来执行SQL,提供了丰富的方法来完成数据库的操作。
Mybatis不会自动提交事务,需要手动提交。
提交方式有两种:openSession(true)或者session.commit()
1》 关于config配置
文件名可以随意命名,习惯名称sqlMapConfig.xml
主要配置3个内容:事务管理器,数据源信息,映射文件
2》UserMapper.xml
文件名可以随意命名,习惯的方式是: POJO对象名+Mapper.xml
用来描述对应对象的信息,写大量表操作的SQL语句
通过#{value}来获取值,value写的是属性的名字。
命名空间namespace作为该映射文件的唯一标志
映射文件里的配置要和代码中匹配,比如返回值类型,参数类型等等
特殊:
当SQL中有特殊字符<,mybatis不能正常解析时,用<![CDATA[??]]>括起来就解决了
<![CDATA[ and age<=#{age} ]]>
两种方式都可以获取参数的值。
推荐能用#不用$:
-
-
- #{ } (推荐!)
-
- 相当于JDBC中的PreparedStatement ,是经过预编译的,是安全的。
- 会为参数自动拼接引号。
- 执行SQL效果:select * from user where userId=”1” and pwd=”2”
-
-
- ${ }:
-
- 相当于JDBC中的Statement ,未经过预编译,仅仅是取变量的值,是非安全的,存在SQL注入。
执行SQL效果:select * from user where userId=1 and pwd=2
mybatis运行过程
先创建工厂来解析config文件,工厂来创建会话,通过session会话来执行mapper中对应的sql语句,最后将结果赋予给对应的