发表于: 2017-03-20 21:41:44
1 1169
今天完成的事情:
学习ER图画法以及mybatis中复杂查询操作的相关内容(运用ResultMap)
明天计划的事情:
学习spring的mybatis
遇到的问题:
在练习mybatis的增删改查操作时,遇到了可以在程序中插入。并且也可以查询到插入的记录,但是在数据库中没有这条记录的情况。
原因是插入过程在缓存中没有提交,
需要将SqlSession openSession(boolean autoCommit)改为sessionFactory.openSession(true),表示默认提交事务。
收获:
以学生选课为例,ER图中学生与课程的关系是多对多(需要多增加一个学生-课程表),任课教师与课程的关系是一对多(将任课教师id设置为课程表的外键)。因此数据库中存放了
学生表(id,student_name)、课程表(id,course_name,teacher_id)、教师表(id,teacher_name),学生选课表(id,student_id,course_id).
利用resultmap过程中需要对其定义id,type(对于java类名)
利用collection和association过程中需要定义<id property="" column=""><result property="" column="">
其中property对应java类属性,column对应数据库字段。
<resultMap id="UserMap"
type="com.xqx.User">
<constructor>
<idArg column="userId" javaType="int"/>
<arg column="userName" javaType="String"/>
<arg column="corp" javaType="String"/>
</constructor>
<collection property="courses" ofType="com.xqx.Course">
<id property="id" column="courseId"/>
<result property="courseName" column="courseName"/>
<association property="teacher" column="teacher_id" javaType="com.xqx.Teacher">
<id property="id" column="teacherId"/>
<result property="teacherName" column="teacherName"/>
</association>
</collection>
</resultMap>
评论