本小节描述mybatis中方法的返回值如何处理
a、增删改的方法返回值为int类型,无需指定
int save(Book b);
<!-- 增删改的方法返回值为int类型,无需指定 -->
<insert id="save" parameterType="Book">
insert into Book(bookName,bookAuthor,BookPrice,bookInfo)
values(#{bookName},#{bookAuthor},#{bookPrice},#{bookInfo})
</insert>
执行查询:
b、若为一个值,直接通过resultType指定返回值的类型
String selectAuthorByName(String name);
<!-- 若为一个值,直接通过resultType指定返回值的类型 -->
<select id="selectAuthorByName" resultType="String">
SELECT bookAuthor FROM book WHERE bookName= #{name}
</select>
c、若为一行数据,直接指定为该类,返回一个对象
Book loadById(int id);
<!-- 若为一行数据,直接指定为该类,返回一个对象 -->
<select id="loadById" resultType="Book" parameterType="int">
select * from book where bookId=#{name}
</select>
d、若为多行数据,直接指定为该类,返回一个List
List<Book> loadAll();
<!-- 若为多行数据,直接指定为该类,返回一个List -->
<select id="loadAll" resultType="Book">
select * from Book
</select>
e、若为半行数据或者多个半行数据,直接指定为该类,查询到的列有值,未查询到的列没有值
List<Book> loadAllPrice();
<!-- 若为半行数据或者多个半行数据,
直接指定为该类,查询到的列有值,未查询到的列没有值
半行返回值为一个对象,多个半行返回值为List-->
<select id="loadAllPrice" resultType="Book">
select bookName,bookPrice from Book
</select>
f、若查询的结果不方便使用实体对象来保存,则使用resultMap
说明:可以不定义,这样column的值和property的值是对应的
<resultMap type="java.util.Map" id="studentResultMap">
<result column="id" property="ids"/>
<result column="name" property="names"/>
<result column="phone" property="phones"/>
</resultMap>
在标签中指定
<select id="selectStudentMap" resultMap="studentResultMap">
select * from student
</select>
返回结果为一个map或者map构成的list,将column中的值插入到map中,其key由property来指定