封装mybaits的结果

ResultType

ResultType结果类型,sql语句执行完毕之后,转换的Java对象,但是Java的类型是任意的,只要能够对应结果的参数即可,比如我们对表查询一个student对象,既有姓名,email和电话等等,而我们使用另外一个people类进行接受,但是people仅仅有姓名和电话,这样仍旧可以接受,只要参数名称类型对应即可

mybaits执行sql语句,mybaits调用类的无参构造函数,创建对象,mybaits把resultset指定列值付给同名的属性

我们返回的people名称,但是执行的是查询student表格,而student表格还是拥有好多的其他的people没有拥有的属性,但是还是可以进行转换

1
2
3
<select id="selectPeople" resultType="com.zss.pojo.People">
select * from student ;
</select>

返回简单类型

比如我们查询列数,则可以使用int来进行接受

1
2
3
<select id="selectCount" resultType="int" >
select count(*) from student ;
</select>
1
2
3
4
5
6
public static void main( String[] args ) throws IOException {
SqlSession sqlSession= MyBaitsUtils.getSqlSession();
StudentDAO dao=sqlSession.getMapper(StudentDAO.class);
int people=dao.selectCount();
System.out.println(people);
}

自定义别名

我们在resultType=”com.zss.pojo.People”中有时候会很长,而且在多个之中可能都要同时用到,那么我们可以在主配置文件中自定义别名

1
2
3
4
5
<!--自定义别名-->
<typeAliases>
<!--type表示全限定名称,而alias表示自定义的别名-->
<typeAlias type="com.zss.pojo.Student" alias="stu"/>
</typeAliases>

但是上面的这种方式我们使用多了就容易造成混淆,所以我们可以采用将包名提前注释的方式,这样我们就可以在ResultType中使用类名

1
2
<!--提前说明包名-->
<package name="com.zss.pojo"/>
1
2
3
<select id="selectStudent"  resultType="Student">
select * from student where id=#{arg0} and name=#{arg1}
</select>

查询返回Map

但是不建议使用map,map由于其中的key能重复,那么当我们使用map的时候,最多仅仅查询一行数据

resultMap

结果映射,指定列明和Java对象属性的对应关系

  1. 自定义列值赋值给哪一个属性
  2. 当你的列名和属性名不一样时
1
2
3
4
5
6
7
8
9
10
11
12
<!--定义resultmap
id自定义名称,表示你定义的这个resultMap
type表示Java的全限定名称-->
<resultMap id="studentMap" type="com.zss.pojo.Student">
<!--如是主键,则使用id进行命名-->
<id column="id" property="id"/>
<!--非主键使用result,将得到的name赋值给Java对象的myname-->
<result column="name" property="myname"/>
</resultMap>
<select id="selectStudent" resultMap="studentMap">
select * from student
</select>

当然我们也可以在sql查询的时候,使用as方法直接将将值给予转换

模糊查询

方式1

1
2
3
4
5
6
public static void main( String[] args ) throws IOException {
SqlSession sqlSession= MyBaitsUtils.getSqlSession();
StudentDAO dao=sqlSession.getMapper(StudentDAO.class);
List<Student> student=dao.selectLikeStudent("%张%");
System.out.println(student);
}
1
2
3
<select id="selectLikeStudent" resultType="com.zss.pojo.Student" >
select * from student where name like #{name};
</select>

方式2

在mybaits的执行语句中进行拼接

1
select * from student where name like % #{name} %;