MyBatis+Spring轻量级整合(Maven)

xiaoxiao2021-02-28  103



Mybatis

       前身是ibatis,但由于种种原因,去年五月时改名为Mybatis,绝大多数API与机制没有变化,只是少数配置文件变动了。但是官网上有一个自动转换的工具,可以方便的将Ibatis系统转换为Mybatis.

Spring:      采用3.x,这是因为Mybatis和Spring3.x有一个较好的结合体验,Maven库上有一个Mybatis-Spring结合包. 所需要采用的JAR包: (POM.xml) <dependency> <groupid>org.springframework</groupid> <artifactid>spring-web<artifactid> <version>3.0.5.RELEASE<version> </dependency> <dependency> <groupid>org.mybatis</groupid> <artifactid>mybatis</artifactid> <version>3.0.4</version> </dependency> <dependency> <groupid>mysql</groupid> <artifactid>mysql-connector-java</artifactid> <version>5.1.14</version> </dependency> 这是整体需要采用的JAR包,当然如果要在WEB环境中跑的话,还需要一些其它的包,比如STRUTS,LOG4J,等等。当然这里只关注对于Mybatis和Spring的整合。抛砖引玉而已 Mybatis-config.xml: (名字可以自定义,最终你会加在Spring配置文件中去加载,让Spring来进行管理) <configuration> <settings>   <setting name="lazyLoadingEnabled" value="false" /> </settings> <typeAliases>   <typeAlias alias="account" type="com.DreamForce.demo.model.Account" /> </typeAliases> </configuration> 这里有两个配置,一个是LazyLoadingEnable,设为false,让Mybatis禁止Lazy加载 在TypeAliases,这是一个别名,之所以要别名,是为了在Mapper映射的时候方便使用,这里type对应的是domin中的Account,按照命名规范的话,我们就account作为别名。 AccountMapper.xml(这是Mybatis的核心,所有的SQL在这里配置) <mapper namespace= "com.DreamForce.Demo.persist.DAO.AccountMapper">    <select id= "getAccountByUsername" parameterType= "string" resultType= "account">     SELECT *  FROM ACCOUNT  WHERE USERID = #{username}    </select> </mapper> namespace在这里只是一个虚目录,也就是说,你完全可以定一个不存在的目录,Namespace的存在就相当于public属性,将此Mapper暴露,方便让Service调用,也可以让其它API所用。但为了可维护性,这里将其与AccountMapper接口进行绑定,方便维护。 Select标签定义了一个"getAccountByUsername"的方法,parameterType代表的是传入的参数,这里是一个string类型的。 ResultType用的是account,这里是和之前别名的account一致,如果之前没有建立别名的话,这里不得不用上全路径:“com.DreamForce.demo.model.Account”,这样会相当的麻烦。 简单的示例:(建立一个Account类,然后通过AccountService来进行Account类的管理,也可以建立一个代理类AccountMapper) Account.java: public class Account implements Serializable  {   private static final long serialVersionUID = 8751282105532159742L;    private String username;    public String getUsername() {      return username;   }    public void setUsername(String username) {     this. username = username;   } } AccountService.java: @Service public class AccountService{    @Autowired    private AccountMapper accountMapper;    public Account getAccount(String username) {       return accountMapper.getAccountByUsername(username);    } 通过@Service注解,可以让Spring进行依赖管理,让Spring知道这是一个Service Bean.        @Autowire注解,可以让自动Set accountMapper,这个也是通过Spring来进行依赖管理的,当然也还需要在Spring配置文件里面进行配置相关的信息,以让Spring可以知道哪些包需要进行注解扫描,以加入依赖管理 applicationContext.xml: 这里用此配置文件进行总体的维护, DataSource:     <context:property-placeholder location= "classpath:mysql.properties"/>      <bean id=" dataSource" class= "org.springframework.jdbc.datasource.DriverManagerDataSource">       <property name=" driverClassName" value=" ${jdbc.driverClassName}"> </property>        <property name=" url" value=" ${jdbc.url}"> </property>       <property name=" username" value= "${jdbc.username}"> </property>        <property name=" password" value= "${jdbc.password}"> </property>      </bean> 配置DataSource,这里通过mysql.properties导入相当的值。 Transaction:     <bean id=" transactionManager" class= "org.springframework.jdbc.datasource.DataSourceTransactionManager">         <property name= "dataSource" ref= "dataSource" />     </bean> 这里将dataSource加入Transaction, 在应用中,可以采用@transaction的方式自动开启事务和关闭事务: 如: @Transactional        public void insert(Object o){......} SessionFactory:   <bean id=" sqlSessionFactory" class=" org.mybatis.spring.SqlSessionFactoryBean">          <property name=" dataSource" ref=" dataSource" />          <property name=" configLocation" value=" classpath:mybatis-config.xml" />      </bean> 配置sessionFactory,需要加入datasource,这里的datasource引用上面配置好的dataSource.同时将mybatis-config.xml加入管理。 需注意Classpath是从根目录导入,而这里的mybatis-config.xml按照JEE规范放在:src/main/Resource/mybatis-config.xml SessionFactory不需要手动去创建,而在服务器启动时,自动启动,所有的Transaction及相关操作都是依赖于这个已启动的SessionFactory. Scan: Scan就是Spring的一种简便的依赖管理,这种之所以简便是你不需要为每一个Bean,Service,Mapper定义一个依赖管理,而只需要在需要加入依赖的类上加入@Service,@Controller等注解就可以加入依赖 当然最重要的是@AutoWired,当系统扫描到这个注解时,就会在系统中去找相关联的类或方法进行注入   <context:annotation-config/>      加入自动注解,让Spring 进行自动注入,具体参考 Spring annotation - --annotation scan:      <context:component-scan base-package=" com.DreamForce.Demo.persist.IbatisImpl,com.DreamForce.demo.integrate" />    上文定义了扫描的路径,这里定义了两个路径以供Spring进行扫描,当然还可以加上一些过滤条件让扫描更精确,效率更高 ---mapper scan:     <bean class= "org.mybatis.spring.mapper.MapperScannerConfigurer">         <property name= "basePackage" value=" com.DreamForce.Demo.persist.DAO" />      </bean> 这里定义了Mybatis 的Mapper文件路径,所有的Mapper文件在这里去寻找。 当然你也可以自己手动管理Mapper依赖关系: 可以在mybatis-config.xml中加入如下代码,手动进行Mapper依赖维护 <sqlMap resource= "com/DreamForce/Demo/persist/DAO/AccountMapper.xml"/> Web.xml: 1.加入Spring Listener   <listener>     <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class>   </listener> 2.contextConfigLocation中加入Spring配置文件,让Spring Listner进行相关的配置管理 <context-param>      <param-name>contextConfigLocation </param-name>      <param-value>/WEB-INF/applicationContext.xml </param-value>    </context-param> 当有多个Spring配置文件时可以使用 classpath*:/spring-*.xml这种配置方式..让容器自动寻找Spring配置文件. 至此Spring-Mybatis基本配置完毕,其它相关信息可以参考其它配置
转载请注明原文地址: https://www.6miu.com/read-60887.html

最新回复(0)