读书人

Spring3+mybatis+mysql调整详解(四)

发布时间: 2012-09-02 21:00:34 作者: rapoo

Spring3+mybatis+mysql整合详解(四)
?Spring3+mybatis+mysql调整详解(四)Spring3+mybatis+mysql调整详解(四)

    ?

    ?settings部分都是可选配置,如果 你不配置,mybatis都设有默认值。附件指南中对相关配置讲解的很详细。

    typeAliases部分主要是给一些java bean 配置一个别名,你使用这个bean的时候直接使用别名即可。特别在mappers配置文件中使用很方便,后面我们会讲到。这有点类似JNDI。

    mappers部分为mybatis的Sql配置。这里你可以直接将sql配置写在mappers配置里面,也可以像本例中一样,新建一个mappers映射文件,然后在mappers配置中指向映射文件。

    ?

    下面我们以LoginMapper.xml为例讲解一下mappers配置:

    ?

    ?Spring3+mybatis+mysql调整详解(四)Spring3+mybatis+mysql调整详解(四)
      ?

      首先,大家注意<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">我这里使用的是mybatis3的配置文件格式,如果使用较低版本的ibatis,标签会有一些差异!

      mapper标签有个namespace,指向dao层的接口(这里,顺便说一下,我们使用Spring3+mybatis+mysql整合,dao层只需要一个接口就行了,不再需要实现类。mybatis会自动创建代理类完成数据查询及封装,这个查询条件及封装依据就取决于我们这里的mappers映射文件。另外,如果特殊的操作,比如数据库备份之类,你可以手动创建实现类完成操作,附件里面有实例。)

      mybatis的增、删、改、查对应相应的insert、delete、update、select标签。注意标签的id一定要与接口中的方法名相同。

      我们重点看一下查询。

      1、单表查询:

      ?

      ?Spring3+mybatis+mysql调整详解(四)Spring3+mybatis+mysql调整详解(四)

        ?注意resultType="Users" 中的Users即前面我们配置的别名,否则要引用com.hl.usersmanager.model.Users。

        如果有参数,则需要指定参数类型:

        ?

        ?Spring3+mybatis+mysql调整详解(四)Spring3+mybatis+mysql调整详解(四)

          ?2、多表查询:

          数据查询涉及到数据封装及将数据从ResultSet中封装为我们需要的对象。在Mybatis中,可以使用 resultType进行简单的封装。例如我们指定 resultType为Users,Mybatis会自动将查询结果封装到Users的属性中。那么如果Users关联到其他实体bean呢?这种情况下,如果我们使用 resultType的方式封装,关联对象将不会被封装!所以我们就需要另外一个更强大的东东,那就是resultMap!

          resultMap说白了,就是自定义数据封装方式,就是告诉mybatis哪个字段对应实体的哪个属性。

          为了能使resultMap配置能够重用,通常我们会单独建一个resultMap,然后在select中使用resultMap=" resultMapId"的方式引用。

          在resultMap中,如果是一一映射,便使用association(注意其javaType属性,就是告诉Mybatis这个关联要封装为什么java bean);如果是一对多则使用collection(需要在实体bean中指定关联对象为List集合,例如private List<LoginLog> loginLogs;

          ?)

          ?

          insert、update、delete操作方式类似,下面我们看一下insert:

          ?

          ?Spring3+mybatis+mysql调整详解(四)Spring3+mybatis+mysql调整详解(四)

            ?parameterType属性,我们指定为Users,然后使用values(#{name},#{age},#{phone}的方式,Mybatis会自动将Users的name,age,phone属性值作为参数。

            ?

            ?

            ?

            ?

            好了,Mybatis配置部分就是这样。

            总体上讲,我个人感觉,虽然Mybatis相对Hibernate没有那么自动化,很多东西需要我们手动配置,但这也显示出Mybatis的灵活性。对后期查询优化、缓存系统建设都是有好处的。

读书人网 >Mysql

热点推荐