spring 3.1.2+struts 2.3.2 + mybatis 3.1.1框架搭建(一)

源码资源地址:http://download.csdn.net/detail/yangjun19890825/4459130    

近来由于工作需要,需要搭建一个新的框架,于是使用最新的SSI搭建了一个测试性框架,能够从数据库中查询数据并输出到JSP页面.

struts 2.3.4和spring 3.1.2,由于只初步写了测试代码,使用的也都是老版本的功能,新版的mybatis的功能有了很大改进,使得配置异常简单。

1. mybatis配置文件中,在老版本的ibatis中,如果命名别名,需要使用typeAlias,需要多少个,就写多少个,如下所示:

                  <typeAlias type=”com.some app.model.User” alias=”User”/>

     当类的数量很多的时候,这个很麻烦。mybatis在SqlSessionFactoryBean类型,提供了一个属性,可以直接通过bean的包名,就一次性将所有的类都起了别名,别名的名字和  类名相同,如上面的User类的别名就是User.在配置文件的语句,如select,就可以直接使用User,作为数据库表的查询结果的关系映射类。

 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
          <property name="dataSource" ref="dataSource" />
          <property name="typeAliasesPackage" value="com.cstor.network.bean" />
    </bean>


2.免DAO层实现类。老版本的ibatis中,DAO需要有接口类和实现类,而mybatis中,通过配置,可直接省略DAO层实现累的编写,只需要编写接口层就好。如我编写的测试框架中,DAO层接口类位于包com.cstor.network.dao底下,则通过如下配置,则直接由mybatis自动去编写实现类:

    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
          <property name="basePackage" value="com.cstor.network.dao" />
    </bean>

 DAO层接口里的方法,通过mybatis的XML配置文件自动对应,需要配置mypper,同时,ACID语句的id需要与DAO层接口里面的方法名称相同,如下:

<mapper namespace="com.cstor.network.dao.UserDao">

    <resultMap id="userResultMap" type="com.cstor.network.bean.User">
        <result property="id" column="ID"/>
        <result property="username" column="USERNAME"/>
        <result property="password" column="PASSWORD"/>
        <result property="email" column="EMAIL"/>
      </resultMap>

  <!-- Select with no parameters using the result map for Account class. -->
      <select id="queryUsers" resultMap="userResultMap">
        select * from user_monitor
      </select>
</mapper> 


public interface UserDao {
    public List<User> queryUsers();
}


 只要到业务层Service的实现类中引用DAO层的接口类便可,比如,我命名了一个接口类UserDao,通过上述配置之后,mybatis自动生成了一个实现类对象 userDao,此时,在spring配置文件中,是不需要有一个bean命名为 userDao的,由mybatis持有。我只需在Service实现类中引用 userDao对象便可,配置如下:

   <bean id="userService" class="com.cstor.network.serviceImpl.UserServiceImpl">
        <property name="userDao" ref="userDao"/>
    </bean>

 


虽然使用mybatis可以省略很多配置,但也带来一些不便,下面说明一下我在搭建的过程中遇到的一些不便之处。

1. 当我将DAO命名为IUserDao时,无论怎么配置,都启动报错,最后将名字改为 UserDao才启动正常。

2.mybatis的XML配置文件必须和DAO层接口处于同一个包底下,而且必须名称相同,如我的框架中,UserDao.java和UerDao.xml都位于com.cstor.network.dao包底下,名字都相同。




你可能感兴趣的:(DAO,spring,框架,bean,ibatis,struts)