您的位置:首页 > 其它

MyBatis入门时的一些细节问题

2016-05-11 01:52 225 查看
今天刚刚使用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。如:
SqlSession
session
=
MyBatisSessionFactory.openSession();

4. 关于resultMap, 一对一, 一对多日后补充上去。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mybatis