mybatis返回结果
# 返回单个实体对象,没有查到数据时返回null
# 返回Map,没有数据时返回一个空map(size为0),而不是null
# 返回List,没有数据时返回一个空list(size为0),而不是null
# null是判断有没有对list集合分配内存空间
# isEmpty()和(list.size() == 0)是判断List内容是否为空,本质是一样的
mybatis有一些默认的类型别名
object->Object
map->Map
hashmap->HashMap
list->List
arraylist->ArrayList
collection->Collection
iterator->Iterator
Map<String,Object> getToMap(Integer id);
<!--将查出的一条记录转为一个map-->
<!--{password=adminfawf, id=1, username=admin}-->
<select id="getToMap" resultType="map">
select * from user where id = #{id}
</select>
List<Map<String,Object>> getAllToMap();
<!--返回所有记录,每条记录转为一个map-->
<!--[{password=adminfawf, id=1, username=admin}, {password=gergfe, id=2, username=vr}]-->
<select id="getAllToMap" resultType="map">
select * from user
</select>
<!--键是每条记录的id字段的值-->
<!--值是每条记录的内容(map集合)-->
@MapKey("id")
Map<String,Object> getAllToMap();
<!--{1={password=adminfawf, id=1, username=admin}, 2={password=gergfe, id=2, username=vr}}-->
<select id="getAllToMap" resultType="map">
select * from user
</select>
模糊查询
List<User> getUserByLike(String username);
<select id="getUserByLike" resultType="User">
<!--error-->
select * from user where username like '%#{username}%'
</select>
<!--转化后-->
<!--?存在于单引号中,属于字符串的一部分,不会被当作占位符-->
select * from user where username like '%?%'
<!--所以此时正确写法-->
select * from user where username like '%${username}%'
select * from user where username like concat('%',#{username},'%')
select * from user where username like "%"#{username}"%"
批量删除
<!--int deleteBatch(String ids);-->
<delete id="deleteBatch">
delete from user where id in (${ids})
</delete>
<!--解析后-->
delete from user where id in (1,2)
<!--如果使用#{},将会无效,解析出来是-->
delete from user where id in ('1,2')
int count = mapper.deleteBatch("1,2");