MyBatis入门时的一些细节问题

来源:互联网 发布:在淘宝代运营公司工作 编辑:程序博客网 时间:2024/05/17 07:49

今天刚刚使用MyBatis,感觉是一种比较不错的ORM框架。今晚上学习的时候碰到一些问题,记录一下。

1. 采用声明Interface调用SQL语句的时候,如果SQL语法有问题,这个方式是不能够看出来的。使用调用映射器配置文件的方式,可以直接执行SQL文件,可能会发现问题出现在哪里。在实现过程中,通过直接调用SQL语句,发现了driver名称拼写错误,select语句拼写错误,而在调用映射器Mapper接口时并没有给出任何有效信息。


2. 在要使用自定义的resultMap作为返回参数的时候,要使用标签resultMap 而不是resultType。例如:

<resultMap type="Student" id="studentResult"><id property="studId" column="stu_id"/><result property="name" column="name"/><result property="email" column="email"/><result property="dob" column="dob"/></resultMap>

在调用studentResult的方法中要使用resultMap标签:

<select id="getAll" resultMap="studentResult">select * from students</select>


3.每一个线程应该有它自己的 SqlSession 实例。SqlSession对象实例不是线程安全的,并且不被共享。所以SqlSession 的作用域最好就是其所在方法的作用域。从Web 应用程序角度上看,SqlSession应该存在于 request级别作用域上。 

对于封装的service类,应该在每个增删改查方法中使用工厂创建新的session。如:SqlSessionsession=MyBatisSessionFactory.openSession();

4. 关于resultMap, 一对一, 一对多日后补充上去。

1 0