前面已经介绍了mybatis,随着项目的开发,对mybatis的理解也更加的深刻。
一、mybatis的实现过程模型
返回实体的结果
二、mybatis的参数和过程
2.1 参数
mybatis支持的操作有以下几种,这样我们就可以对数据操作,并返回值
方法 | Value |
---|---|
insert | 插入 |
update | 更新 |
delete | 删除 |
create | 建立 |
foreach | 循环 |
if | 条件 |
paramType | 传入参数 |
resultType | 返回结果 |
id | 对应的方法名 |
··· | ··· |
2.2 使用
2.2.1paramtype的意义
paramtype可以方便我们传递参数类型,如果是一个类可以直接使用它的方法,但是需要在这个类中用到set或者get的方法。
- 参数传递过来的值可以是对象、数据类型等
- 参数名就是传递过来的名字,当然可以用param去指定参数。
<select id="findById" parameterType="int" resultType="com.zhongruan.bean.User">
SELECT * FROM student WHERE `index`=#{id};
</select>
2.2.2 resultType的意义
返回类型是数据类型
直接使用数据类型去接收即可,或者用Object去接收。
返回类型为对象
他的返回结果是根据数据的字段来设定的,因此需要一个类来进行接收。类中的方法需要和数据库查询的字段一致,他会自动调用一个构造方法构造这个类,如果没有参数则会为空,参数超过类的属性个数就会出错。
- 返回的参数格式和类的个数关系:return <= Object。
- 可以使用as来改变输出的值,也可以修改类名来接收数据。
<select id="findStudentScore" parameterType="StudentToScore" resultType="ScoreShow">
SELECT course.id as courseId, course.`name`, course.`desc`, course.credit, student_to_score.score, student_to_score.startTime, student_to_score.endTime FROM student_to_score, course WHERE course.id = student_to_score.courseId and studentId=#{studentId} ORDER BY id
</select>
2.2.3 foreach的使用
我们在使用in查询的时候,不能直接将这个list传入,需要用到foreach来完成整个条件的构造,foreach中提供了collection和构造的方法,包括start的东西、end的东西以及separator来进行构造
<delete id="deleteSelectedStudent" parameterType="List">
DELETE FROM student WHERE studentId IN
<foreach collection="list" item="studentId" open="(" close=")" separator=",">
#{studentId}
</foreach>
</delete>
2.2.4 if的使用
if用于条件的判断,可以通过if构造我们需要的条件,简化重复的代码,增强代码的鲁棒性。if通过对传入参数的判断即可以完成相应的条件构造。
<if test="classId != null and classId != 0">
classId = #{classId}
</if>