Mybatis Map用法和对 实体类起别名的方法
在我之前的博客中 使用过List
List和Map的区别;
List:是存储单列数据的集合,存储的数据是有序并且是可以重复的
Map:存储双列数据的集合,通过键值对存储数据,存储 的数据是无序的,Key值不能重复,value值可以重复
List在使用时可以返回多组数据然后封装起来 通过for的增强型循环输出
Map时可以方便于 如果一组数据有多个字段 但是用的上的只有几个可以通过Map实现
其他代码可以前我 Mybatis 增删改查 基础小进阶
1 User getUserById2(Map<String,Object> map); 2 3 4 //万能的Map 可以避免在多过数据时 只需对某些数据修改时却需要整个User对象 5 int addUser2(Map<String,Object> map);
对应的XML
1 <select id="getUserById2" parameterType="map" resultType="com.zxy.pojo.User"> 2 select * from mybatis.user where name = #{Username} 3 </select> 4 5 7 <insert id="addUser2" parameterType="map"> 8 insert into mybatis.user(id,pwd) values (#{userId},#{userPwd}) 9 </insert>
Test
@Test public void select(){ SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); HashMap<String, Object> map = new HashMap<>(); map.put("Username","xxx"); User user = mapper.getUserById2(map); System.out.println(user); sqlSession.close(); } @Test public void add(){ SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); Map<String, Object> map = new HashMap<String, Object>(); map.put("userId",5); map.put("userPwd","1603933"); mapper.addUser2(map); sqlSession.commit(); sqlSession.close(); }
实体类起别名的方法
1.方法一
1 <typeAliases> 2 <typeAlias type="com.zxy.pojo.User" alias="user"/> 3 </typeAliases>
2.方法二 到实体类上一级目录 使用时 为什么实体类的小写
1 <typeAliases> 2 <package name="com.zxy.pojo"/> 3 </typeAliases>
如果一定要修改 在实体类顶上用注解@Alias(); 二者缺一不可
1 @Alias("user") 2 public class User { 3 }
使用 将 com.dao.User 替换成 user
1 <select id="getUserList" resultType="user" > 2 select * from mybatis.user; 3 </select>