Skip to content

zhanghanlin/mybatis-spring

Repository files navigation

mybatis-spring

#目录

##项目说明

  • 本项目作用为将MybatisSpring整合到一起
  • 项目处于开发阶段
  • ......

##模块划分 ###Service模块

  • 存放实体以及相关核心代码
  • 分为四个子模块
    • dao
      • Mybatis自动生成,一般存放*Mapper.java,相当于Hibernate中的Dao
    • entity
      • Mybatis自动生成,存放对于数据库的Bean
    • service
      • 业务层,对外提供服务
    • resources/mapper
      • Mybatis自动生成,一般存放*Mapper.xml,为*Mapper.java的映射文件

###Util模块

  • 存放项目需要的工具类
  • 模块划分
    • Spring工具包
      • Spring相关的处理方法
    • MD5工具包
      • 字符串加密使用(MessageDigest)
    • Http工具包
      • 后台发送Post/Get请求
    • ......

###Web模块

  • 用于展示页面,相当于View
  • ......

###Redis模块

  • 对Redis进行操作

##MyBatis配置 ###mybatis与spring整合配置

  • 相关配置文件对应Web模块resources/spring/applicationContext-mybatis.xml
<configuration>
	<settings>
		<!-- 这个配置使全局的映射器启用或禁用缓存 -->
		<setting name="cacheEnabled" value="true" />
		<!-- 允许 JDBC 支持生成的键。需要适合的驱动。如果设置为 true 则这个设置强制生成的键被使用,尽管一些驱动拒绝兼容但仍然有效(比如 
			Derby) -->
		<setting name="useGeneratedKeys" value="true" />
		<!-- 配置默认的执行器。SIMPLE 执行器没有什么特别之处。REUSE 执行器重用预处理语句。BATCH 执行器重用语句和批量更新 -->
		<setting name="defaultExecutorType" value="REUSE" />
		<!-- 全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载。 -->
		<setting name="lazyLoadingEnabled" value="true" />
		<!-- 设置超时时间,它决定驱动等待一个数据库响应的时间。 -->
		<setting name="defaultStatementTimeout" value="25000" />
	</settings>
	<!-- 别名配置 -->
	<typeAliases></typeAliases>
	<!-- 指定映射器路径 -->
	<mappers>
		<mapper resource="mapper/*.xml" />
	</mappers>
</configuration>

###Mybatis数据源以及注入配置

  • 相关配置文件对应Web模块resources/spring/applicationContext-dataSource.xml
<!-- Mybatis -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
	<!-- 数据源引用 -->
	<property name="dataSource" ref="dataSource" />
	<!-- mybatis的映射文件 -->
	<property name="mapperLocations" value="classpath:mapper/*.xml" />
	<!-- 要映射类的包路径,如果使用了这种方式,则configLocation中不必再进行声明 -->
	<property name="typeAliasesPackage" value="com.demo.java.entity" />
</bean>
<!-- 这段配置会扫描com.demo.java.dao下的所有接口,然后创建各自接口的动态代理类 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
	<property name="basePackage" value="com.demo.java.dao" />
</bean>

###Mybatis自动生成代码

  • Mybatis支持根据数据库表自动生成bean dao xml文件
  • 对应配置文件Service模块resources/generatorConfig.xml
  • 注:因为本Demo中bean dao xml等文件都存放在Service中,所以配置文件放到Service模块
  • 需要在Maven的pom.xml中增加mybatis-generator插件
<!-- mybatis -->
<plugin>
	<groupId>org.mybatis.generator</groupId>
	<artifactId>mybatis-generator-maven-plugin</artifactId>
	<version>${mybatis-generator-maven-plugin.version}</version>
	<configuration>
		<verbose>true</verbose>
		<overwrite>true</overwrite>
	</configuration>
</plugin>
  • 具体配置文件
...
<!-- 引入配置文件 -->
<properties resource="generatorConfig.properties" />
<!-- 指定数据连接驱动jar地址 -->
<classPathEntry location="${jdbc.jar.path}" />
<!-- 一个数据库一个context -->
<context id="infoGuardian">
	<!-- 注释 -->
	<commentGenerator>
		<!-- 是否取消注释 -->
		<property name="suppressAllComments" value="true" />
	</commentGenerator>
		<!-- jdbc连接 -->
	<jdbcConnection driverClass="${jdbc.driver}"
		connectionURL="${jdbc.url}" userId="${jdbc.username}" password="${jdbc.password}" />
	<!-- 类型转换 -->
	<javaTypeResolver>
		<!-- 是否使用bigDecimal, false可自动转化以下类型(Long, Integer, Short, etc.) -->
		<property name="forceBigDecimals" value="false" />
	</javaTypeResolver>
	<!-- 生成实体类地址 -->
	<javaModelGenerator targetPackage="com.demo.java.entity"
		targetProject="${project.src}">
		<property name="enableSubPackages" value="false" />
		<!-- 是否针对string类型的字段在set的时候进行trim调用 -->
		<property name="trimStrings" value="true" />
	</javaModelGenerator>
	<!-- 生成mapxml文件 -->
	<sqlMapGenerator targetPackage="mapper"
		targetProject="${project.resources}">
		<property name="enableSubPackages" value="false" />
	</sqlMapGenerator>
	<!-- 生成mapxml对应client,也就是接口dao -->
	<javaClientGenerator targetPackage="com.demo.java.dao"
		targetProject="${project.src}" type="XMLMAPPER">
		<property name="enableSubPackages" value="false" />
	</javaClientGenerator>
	<!-- 配置表信息 -->
	<table tableName="p_user" domainObjectName="User"
		enableCountByExample="false" enableDeleteByExample="false"
		enableSelectByExample="false" enableUpdateByExample="false">
	</table>
</context>
  • 配置完成后使用DOS命令进入到Service模块根目录执行以下命令
mvn mybatis-generator:generate

##Spring配置

  • Spring配置文件存放位置:Web模块resources/spring目录下
    • applicationContext-common.xml
      • 用于配置Spring公共配置:增加扫描注解,消息定制等
    • applicationContext-dataSource.xml
      • 用于配置数据源:DruidDataSource以及Mybatis相关配置
    • applicationContext-mybatis.xml
      • Mybatis配置文件
    • applicationContext-redis.xml
      • Redis配置文件
    • applicationContext-profile.xml
      • 用于配置多个需要加载的属性文件
      • Junit@ActiveProfiles([profile])指定加载的属性文件
      • Web容器启动则需要在web.xml中增加以下配置
       <context-param>
       	<param-name>spring.profiles.default</param-name>
       	<param-value>[profile]</param-value>
       </context-param>
      
    • applicationContext.xml
      • Web容器启动时需要只需加载该文件即可,其他需要加载的配置文件在该文件中配置

##Redis配置 ###Redis版本说明

  • Redis使用jedis-2.5.1
  • POM引用
<dependency>
	<groupId>redis.clients</groupId>
	<artifactId>jedis</artifactId>
	<version>${jedis.version}</version>
</dependency>

###Redis配置说明

  • 自定义Jedis工具实现
  • Spring配置文件
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
	<property name="maxTotal" value="${redis.maxTotal}" />
	<property name="maxIdle" value="${redis.maxIdle}" />
	<property name="maxWaitMillis" value="${redis.maxWaitMillis}" />
	<property name="testOnBorrow" value="${redis.testOnBorrow}" />
</bean>
<bean id="jedisSupport" class="com.demo.java.utils.redis.JedisSupport"
	c:jedisPoolConfig-ref="jedisPoolConfig" c:host="${redis.host}" c:port="${redis.port}" />

###Redis使用说明

  • 使用Spring注解将redis注入即可
@Resource
JedisSupport jedisSupport;
  • 可根据业务需求自定修改JedisSupport.java文件

##Junit测试

  • Junit测试目录为Web模块下src/test/java目录
  • 新增Junit测试类直接集成com.demo.java.test.AbstractTest即可
  • 加载配置文件信息以在com.demo.java.test.AbstractTest配置完毕
@RunWith(SpringJUnit4ClassRunner.class)
//指定需要加载的属性文件
@ActiveProfiles("test")
//指定需要加载的配置文件
@ContextConfiguration({ "classpath:spring/applicationContext.xml" })

##登陆Demo

  • 启动项目后,可访问 [host]:[port]/signIn进入到登录页
  • 输入正确的帐号密码可看到 ${userName},Hello,World!
  • 帐号或密码错误则不会展示 ${userName}

About

mybatis spring mvc

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published