普法栏目剧引狼入室上:MyBatis+Spring轻量级整合(Maven)
来源:百度文库 编辑:中财网 时间:2024/04/30 03:10:36
Mybatis: 前身是ibatis,但由于种种原因,去年五月时改名为Mybatis,绝大多数API与机制没有变化,只是少数配置文件变动了。但是官网上有一个自动转换的工具,可以方便的将Ibatis系统转换为Mybatis.Spring: 采用3.x,这是因为Mybatis和Spring3.x有一个较好的结合体验,Maven库上有一个Mybatis-Spring结合包.
所需要采用的JAR包:(POM.xml) org.springframeworkspring-web 3.0.5.RELEASEorg.mybatis mybatis 3.0.4 mysql mysql-connector-java 5.1.14
这是整体需要采用的JAR包,当然如果要在WEB环境中跑的话,还需要一些其它的包,比如STRUTS,LOG4J,等等。当然这里只关注对于Mybatis和Spring的整合。抛砖引玉而已Mybatis-config.xml:(名字可以自定义,最终你会加在Spring配置文件中去加载,让Spring来进行管理)
-
- <setting name="lazyLoadingEnabled" value="false" />
-
-
-
alias="account" type="com.DreamForce.demo.model.Account" /> -
这里有两个配置,一个是LazyLoadingEnable,设为false,让Mybatis禁止Lazy加载在TypeAliases,这是一个别名,之所以要别名,是为了在Mapper映射的时候方便使用,这里type对应的是domin中的Account,按照命名规范的话,我们就account作为别名。AccountMapper.xml(这是Mybatis的核心,所有的SQL在这里配置)
namespace="com.DreamForce.Demo.persist.DAO.AccountMapper">
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:
@Servicepublic 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: location="classpath:mysql.properties"/> id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> name="driverClassName" value="${jdbc.driverClassName}"> name="url" value="${jdbc.url}"> name="username" value="${jdbc.username}"> name="password" value="${jdbc.password}"> 配置DataSource,这里通过mysql.properties导入相当的值。Transaction: id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> name="dataSource" ref="dataSource" /> 这里将dataSource加入Transaction,在应用中,可以采用@transaction的方式自动开启事务和关闭事务:如: @Transactional public void insert(Object o){......}SessionFactory: id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> name="dataSource" ref="dataSource" /> name="configLocation" value="classpath:mybatis-config.xml" /> 配置sessionFactory,需要加入datasource,这里的datasource引用上面配置好的dataSource.同时将mybatis-config.xml加入管理。需注意Classpath是从根目录导入,而这里的mybatis-config.xml按照JEE规范放在:src/main/Resource/mybatis-config.xmlSessionFactory不需要手动去创建,而在服务器启动时,自动启动,所有的Transaction及相关操作都是依赖于这个已启动的SessionFactory.
Scan:Scan就是Spring的一种简便的依赖管理,这种之所以简便是你不需要为每一个Bean,Service,Mapper定义一个依赖管理,而只需要在需要加入依赖的类上加入@Service,@Controller等注解就可以加入依赖当然最重要的是@AutoWired,当系统扫描到这个注解时,就会在系统中去找相关联的类或方法进行注入 加入自动注解,让Spring 进行自动注入,具体参考Spring annotation---annotation scan: base-package="com.DreamForce.Demo.persist.IbatisImpl,com.DreamForce.demo.integrate" /> 上文定义了扫描的路径,这里定义了两个路径以供Spring进行扫描,当然还可以加上一些过滤条件让扫描更精确,效率更高
---mapper scan: class="org.mybatis.spring.mapper.MapperScannerConfigurer"> name="basePackage" value="com.DreamForce.Demo.persist.DAO" /> 这里定义了Mybatis 的Mapper文件路径,所有的Mapper文件在这里去寻找。当然你也可以自己手动管理Mapper依赖关系:可以在mybatis-config.xml中加入如下代码,手动进行Mapper依赖维护"com/DreamForce/Demo/persist/DAO/AccountMapper.xml" />Web.xml:1.加入Spring Listener org.springframework.web.context.ContextLoaderListener 2.contextConfigLocation中加入Spring配置文件,让Spring Listner进行相关的配置管理 contextConfigLocation /WEB-INF/applicationContext.xml 当有多个Spring配置文件时可以使用 classpath*:/spring-*.xml这种配置方式..让容器自动寻找Spring配置文件.
至此Spring-Mybatis基本配置完毕,其它相关信息可以参考其它配置
这里有两个配置,一个是LazyLoadingEnable,设为false,让Mybatis禁止Lazy加载在TypeAliases,这是一个别名,之所以要别名,是为了在Mapper映射的时候方便使用,这里type对应的是domin中的Account,按照命名规范的话,我们就account作为别名。AccountMapper.xml(这是Mybatis的核心,所有的SQL在这里配置)
namespace="com.DreamForce.Demo.persist.DAO.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:
@Servicepublic 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:
Scan:Scan就是Spring的一种简便的依赖管理,这种之所以简便是你不需要为每一个Bean,Service,Mapper定义一个依赖管理,而只需要在需要加入依赖的类上加入@Service,@Controller等注解就可以加入依赖当然最重要的是@AutoWired,当系统扫描到这个注解时,就会在系统中去找相关联的类或方法进行注入
---mapper scan:
至此Spring-Mybatis基本配置完毕,其它相关信息可以参考其它配置
需要spring整合hibernate的源代码
spring是什么意思
pierian spring
spring breeze
Eniaying Spring
Spring优缺点
什么是整合?
整合含义
论坛整合
整合补丁?
整合是什么意思
整合聊天记录
整合主板
整合分销
网站整合
请问什么是轻量级组件,什么又是重量级组件
只要武功高,轻量级的也可以打败重量级的?
请介绍一款轻量级的英文版防火墙
Happy spring festival
hot spring是什么意思
Happy spring festival
Spring Festival是什么节日
The Spring Festival
spring lasts long