mybatis select元素的使用以及模糊查询

来源:互联网 发布:ubuntu win7引导修复 编辑:程序博客网 时间:2024/05/22 02:16
• Select元素来定义查询操作。
• Id:唯一标识符。
– 用来引用这条语句,需要和接口的方法名一致
• parameterType:参数类型。
– 可以不传,MyBatis会根据TypeHandler自动推断
• resultType:返回值类型。

– 别名或者全类名,如果返回的是集合,定义集合中元素的类型。不能和resultMap同时使用

当进行模糊查询的时候,一般会查询多组数据,所以查询到的数据一般要使用集合类进行一个封装,那么在myBatis框架下是如何操作的呢?

ex:

1.查询到的数据封装成List:

1.1映射文件:

<select id="getEmpsByLastNameLike" resultType="com.test.beans.Employee">SELECT * FROM  tb1_emplyee WHERE   last_name LIKE #{lastName}</select>

tip:虽然是List,但是返回值类型还是 Employee

1.2.

public List<Employee> getEmpsByLastNameLike(String lastName);
1.3.

测试类:

@Testpublic void test04() throws IOException{SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();//1、获取到的SqlSession不会自动提交数据SqlSession openSession = sqlSessionFactory.openSession();try{EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);List<Employee> lsit=mapper.getEmpsByLastNameLike("%e%");for (Employee employee:lsit){System.out.println(employee);}}finally{openSession.close();}}

2.将查询到的数据封装成Map

单个查询的情况(Mybtis为常见的类起了别名,这里直接写成map即可)

<select id="getEmpByIdReturnMap" resultType="map">SELECT * FROM  tb1_emplyee WHERE  id=#{id}</select>
多个查询:

<select id="getEmpByLastNameLikeReturnMap" resultType="com.test.beans.Employee">SELECT * FROM  tb1_emplyee WHERE last_name LIKE #{lastName}</select>

@MapKey("id")public Map<Integer, Employee> getEmpByLastNameLikeReturnMap(String lastName);
使用@MapKey注解可以指定Map的key值

测试类:

@Testpublic void test05() throws IOException{SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();//1、获取到的SqlSession不会自动提交数据SqlSession openSession = sqlSessionFactory.openSession();try{EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);Map<Integer,Employee> map=mapper.getEmpByIdReturnMap(1);Map<Integer,Employee> map2=mapper.getEmpByLastNameLikeReturnMap("%e%");System.out.println(map2);}finally{openSession.close();}}


原创粉丝点击