本文主要是介绍Mybatis映射文件——ParameterType,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
输入映射ParameterType
指定输入参数的java类型,可以使用别名或者类的全限定名。它可以接受简单类型、pojo对象、HashMap
传递简单类型
传入POJO类型
传入POJO包装对象:传递比较复杂的信息
传入map对象
1接口中声明方法:
public List<User> findUserByMap(Map<String,Object> map);
2映射文件修改
<!--//通过Map查询--><select id="findUserByMap" parameterType="hashmap" resultType="user">select * from user u where username like '%${username}%' and sex=#{sex};</select>
3测试
/** 多条件查询* */@Testpublic void test2() throws IOException {UserMapper userMapper=session.getMapper(UserMapper.class);Map<String,Object> map=new HashMap<String, Object>();map.put("username","张");map.put("sex","1");List<User> list=userMapper.findUserByMap(map);System.out.println(list);}
输出映射resultType/resultMap
resultType:使用resultType进行结果映射时,查询的列名和映射的pojo属性名完全一致,该列才能映射成功。如果查询的列名和映射的pojo属性名全部不一致,则不会创建pojo对象,如果查询的列名和映射的pojo属性有一个不一致,就会创建pojo对象。
输出简单类型
当输出结果只有一列时,可以使用ResultType指定简单类型作为输出结果类型。
1、UserMapper中创建一个借口,查询用户人数
/*** 返回用户个数* @param vo* @return*/public int findUserCount(UserQuerVO vo);
2、UserMapper.xml中设置方法
<!--查找用户的个数--><!-- 设置返回数据为基本数据类型--><select id="findUserCount" parameterType="UserQuerVO" resultType="int">select count(*) from user where sex=#{user.sex};</select>
3、测试
public class Demo6 {SqlSession session;@Beforepublic void before() throws IOException {System.out.println("before......获取session");
// * a) 读取配置文件;InputStream is= Resources.getResourceAsStream("SqlMapConfig.xml");
// * b) 通过SqlSessionFactoryBuilder创建SqlSessionFactory会话工厂。SqlSessionFactory factory= new SqlSessionFactoryBuilder().build(is);session=factory.openSession();}@Afterpublic void after(){session.close();}/*** 查询该性别的人数* @throws IOException*/@Testpublic void test1() throws IOException {UserMapper userMapper=session.getMapper(UserMapper.class);//通过模型的包装类来查询用户UserQuerVO query=new UserQuerVO();User user=new User();user.setSex("1");query.setUser(user);int count=userMapper.findUserCount(query);System.out.println("人数为"+count);}}
ResultMap
如果查询出来的列名和属性名不一致,通过定义一个resultMap将列名和pojo属性名之间做一个映射关系
1、定义resultMap
/*** 用resultMap类型为返回值类型* @param UserId* @return*/public User findUserByIdResultMap(int UserId);
2、使用resultMap作为statement的输出映射类型。
<!--设置返回数据类型为resultMap--><resultMap id="userResultMap" type="user"><id property="id" column="id_"></id><result property="username" column="username_"></result><result property="sex" column="sex_"></result><result property="birthday" column="birthday_"></result><result property="address" column="address_"></result></resultMap><select id="findUserByIdResultMap" parameterType="int" resultMap="userResultMap">select id ,username username_,sex sex_,birthday birthday_,address address_from user where id=#{id};</select>
3、测试
/*** 结果类型为resultMap* @throws IOException*/@Testpublic void test2() throws IOException {UserMapper userMapper=session.getMapper(UserMapper.class);User user=userMapper.findUserByIdResultMap(10);System.out.println("查询结果"+user);}
这篇关于Mybatis映射文件——ParameterType的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!