spring与mybatis整合实例
来源:互联网 发布:数据分析的方法 编辑:程序博客网 时间:2024/06/05 16:55
spring与mybatis整合实例
在接触了一个后台需求之后,自己搭建了一个spring与mybatis框架项目,这里就与大家分享一下,所搭建的工程为maven工程,首先来看下代码结构,还是不太规范,对于配置文件的包有需要童鞋可自行建立规范的方式。
一、代码结构
二、所搭建的项目是maven工程,pom.xml包配置如下
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.starit.collection</groupId><artifactId>gzzc-spring-mybatis</artifactId><version>0.0.1-SNAPSHOT</version><dependencies><dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><version>5.0.0.Alpha2</version></dependency><!--与日志相关的jar --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.2</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.0.13</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.0.13</version> </dependency> <!--与kafka相关jar --> <dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>0.10.0.1</version></dependency><!-- json相关包 --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.28</version></dependency><!-- spring相关包 --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.3.7.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>4.3.7.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>4.3.7.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>4.3.7.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>4.3.7.RELEASE</version><scope>test</scope></dependency><!-- 数据库包 --><dependency><groupId>com.oracle</groupId><artifactId>ojdbc6</artifactId><version>11.2.0.1.0</version></dependency><dependency><groupId>proxool</groupId><artifactId>proxool</artifactId><version>0.9.1</version></dependency><dependency><groupId>proxool</groupId><artifactId>proxool-cglib</artifactId><version>0.9.1</version></dependency><!-- mybatis --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.0</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.3.0</version><exclusions><exclusion><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId></exclusion><exclusion><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId></exclusion><exclusion><groupId>org.springframework</groupId><artifactId>spring-core</artifactId></exclusion><exclusion><groupId>org.springframework</groupId><artifactId>spring-context</artifactId></exclusion><exclusion><groupId>org.springframework</groupId><artifactId>spring-expression</artifactId></exclusion><exclusion><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId></exclusion></exclusions></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><configuration><skip>true</skip></configuration></plugin><plugin><groupId>org.codehaus.mojo</groupId><artifactId>exec-maven-plugin</artifactId><configuration><executable>java</executable><mainClass>com.starit.ipran.socket.ServerStart</mainClass></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><configuration><excludes><exclude>*.xml</exclude></excludes></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-assembly-plugin</artifactId><configuration><descriptors><descriptor>src/main/assembly/assembly.xml</descriptor></descriptors></configuration><executions><execution><id>make-assembly</id><phase>package</phase><goals><goal>single</goal></goals></execution></executions></plugin></plugins></build></project>
三、spring与mybatis集成,spring-mybatis.xml说明<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"><!-- 自动扫描 --><context:component-scan base-package="com.cn.hnust" /><!-- 加载配置源数据库信息--><context:property-placeholder location="classpath:jdbc.properties" /><!-- 配置数据源 --><bean id="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource"> <property name="driver" value="${db.driverName}" /> <property name="driverUrl" value="${db.url}" /> <property name="user" value="${db.username}" /> <property name="password" value="${db.password}" /> <property name="alias" value="${db.alias}" /> <property name="houseKeepingTestSql" value="${db.testSql}" /> <property name="trace" value="true" /> <property name="testBeforeUse" value="true" /> </bean><!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource" /><!-- 自动扫描mapping.xml文件 --><property name="mapperLocations" value="classpath:IpranAlarmInfoMapper.xml"></property></bean><!-- DAO接口所在包名,Spring会自动查找其下的类 --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.starit.ipran.dao" /><property name="sqlSessionFactory" ref="sqlSessionFactory"></property></bean><!-- (事务管理)transaction manager, use JtaTransactionManager for global tx --><bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource" /></bean></beans>
ps:jdbc.properties数据库信息文件的内容格式为:
db.driverName=oracle.jdbc.OracleDriver db.url=jdbc:oracle:thin:@127.0.0.1:8765:gzzcdb.username=spiritsdb.password=spirits2017testdb.alias=spiritsdb.maxActiveTime=3600000db.maxConnCount=50db.minConnCount=1db.testSql=select 'x' from DUALhibernate.dialect=org.hibernate.dialect.OracleDialecthibernate.show_sql=true
四、IpranAlarmInfoDao.java dao层package com.starit.ipran.dao;import java.util.List;import org.apache.ibatis.annotations.Param;import com.starit.ipran.model.IpranAlarm;public interface IpranAlarmInfoDao {/** * 插入告警 * @param ipranAlarm * @return */public boolean insertAlarm(IpranAlarm ipranAlarm);/** * 查询告警 * @param serialId * @param alarmStatus * @return */public List<IpranAlarm> queryAlarm(IpranAlarm ipranAlarm);/** * 查询告警 与当前告警状态不一样的 * @param serialId * @param alarmStatus * @return */public List<IpranAlarm> queryAlarmStatusNotCurrent(IpranAlarm ipranAlarm);/** * 更新告警状态 更新与当前告警状态不相同的 * @param serialId * @param alarmStatus * @return */public boolean updateAlarmStatusNotCurrent(IpranAlarm ipranAlarm);/** * 更新告警次数 * @param serialId * @param alarmCount * @return */public boolean updateAlarmCount(IpranAlarm ipranAlarm);}需要注意的是dao层的方法名应该与mapper.xml里面的sql语句的id相对应一致,在mapper.xml里面相应地也会标红。
五、IpranAlarmInfoMapper.xml配置
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" ><mapper namespace="com.starit.ipran.dao.IpranAlarmInfoDao" > <resultMap id="BaseResultMap" type="com.starit.ipran.model.IpranAlarm" > <result column="ID" property="id" jdbcType="DECIMAL" /> <result column="SERIAL_ID" property="serialId" jdbcType="VARCHAR" /> <result column="NE_ID" property="neId" jdbcType="VARCHAR" /> <result column="NECITY" property="necity" jdbcType="VARCHAR" /> <result column="NE_IP" property="neIp" jdbcType="VARCHAR" /> <result column="ALARM_CAT" property="alarmCat" jdbcType="VARCHAR" /> <result column="ALARM_NAME" property="alarmName" jdbcType="VARCHAR" /> <result column="ALARM_LEVEL" property="alarmLevel" jdbcType="VARCHAR" /> <result column="ALARM_STATUS" property="alarmStatus" jdbcType="VARCHAR" /> <result column="ALARM_DETAIL" property="alarmDetail" jdbcType="VARCHAR" /> <result column="ALARM_AFFECTION" property="alarmAffection" jdbcType="VARCHAR" /> <result column="ALARM_TIME" property="alarmTime" jdbcType="VARCHAR" /> <result column="UPDATE_TIME" property="updateTime" jdbcType="VARCHAR" /> <result column="CLEARED_TIME" property="clearedTime" jdbcType="VARCHAR" /> <result column="ALARM_COUNT" property="alarmCount" jdbcType="DECIMAL" /> <result column="FLAG" property="flag" jdbcType="DECIMAL" /> <result column="BATCH" property="batch" jdbcType="DECIMAL" /> <result column="ENTRY_TIME" property="entryTime" jdbcType="VARCHAR" /> <result column="COMPARE_ID" property="compareId" jdbcType="VARCHAR" /> </resultMap> <insert id="insertAlarm" parameterType="com.starit.ipran.model.IpranAlarm" > insert into STG_INM.IN_IPRAN_ALARM (ID, SERIAL_ID, NE_ID, NECITY, NE_IP, ALARM_CAT, ALARM_NAME, ALARM_LEVEL, ALARM_STATUS, ALARM_DETAIL, ALARM_AFFECTION, ALARM_TIME, UPDATE_TIME, CLEARED_TIME, ALARM_COUNT, FLAG, BATCH, ENTRY_TIME, COMPARE_ID) values (STG_INM.IN_IPRAN_ALARM_SEQ.nextval, #{serialId,jdbcType=VARCHAR}, #{neId,jdbcType=VARCHAR}, #{necity,jdbcType=VARCHAR}, #{neIp,jdbcType=VARCHAR}, #{alarmCat,jdbcType=VARCHAR}, #{alarmName,jdbcType=VARCHAR}, #{alarmLevel,jdbcType=VARCHAR}, #{alarmStatus,jdbcType=VARCHAR}, #{alarmDetail,jdbcType=VARCHAR}, #{alarmAffection,jdbcType=VARCHAR}, #{alarmTime,jdbcType=VARCHAR}, #{updateTime,jdbcType=VARCHAR}, #{clearedTime,jdbcType=VARCHAR}, #{alarmCount,jdbcType=DECIMAL}, #{flag,jdbcType=DECIMAL}, #{batch,jdbcType=DECIMAL}, #{entryTime,jdbcType=VARCHAR}, #{compareId,jdbcType=VARCHAR}) </insert> <select id="queryAlarm" parameterType="com.starit.ipran.model.IpranAlarm" resultMap="BaseResultMap"> select * from STG_INM.IN_IPRAN_ALARM t where t.SERIAL_ID = #{serialId} and t.ALARM_STATUS = #{alarmStatus} </select> <select id="queryAlarmStatusNotCurrent" parameterType="com.starit.ipran.model.IpranAlarm" resultMap="BaseResultMap"> select * from STG_INM.IN_IPRAN_ALARM t where t.SERIAL_ID = #{serialId} and t.ALARM_STATUS != #{alarmStatus} </select> <update id="updateAlarmStatusNotCurrent" parameterType="com.starit.ipran.model.IpranAlarm"> UPDATE stg_inm.in_ipran_alarm t SET t.alarm_status = #{alarmStatus} WHERE t.serial_id = #{serialId} and t.alarm_status != #{alarmStatus} </update> <update id="updateAlarmCount" parameterType="com.starit.ipran.model.IpranAlarm"> UPDATE stg_inm.In_Ipran_Alarm t SET t.alarm_count = #{alarmCount,jdbcType=DECIMAL} WHERE t.serial_id = #{serialId,jdbcType=VARCHAR} and t.ALARM_STATUS = #{alarmStatus,jdbcType=VARCHAR} </update> </mapper>
此处标红id应该与dao层方法名一致,标蓝部分表示mapper.xml关联的是哪个dao层,标绿色部分表示返回的结果是model里面的哪些字段。六、程序现在只需要加载spring-mybatis.xml然后获取bean,得到相应的dao对象之后就可以调用各种crud方法进行操作了,因为是介绍spring与mybatis集成,其他就不介绍了。
阅读全文
1 0
- spring与mybatis整合实例
- spring MVC 与 MyBatis的整合实例
- Spring 整合Mybatis实例
- mybatis系列二:Spring与MyBatis的整合实例
- mybatis与spring boot整合 注解 与实例大全
- spring与mybatis整合
- 整合spring与myBatis
- mybatis 与 spring 整合
- mybatis与spring整合
- mybatis与spring整合
- mybatis与spring整合
- spring与mybatis整合
- spring与mybatis整合
- Spring与Mybatis整合
- Mybatis与Spring整合
- spring与mybatis整合
- mybatis与spring整合
- spring与mybatis整合
- vimscrip学习——基础
- (POJ
- 常用的mysql语句及命令语句
- iOS MQTT使用案例 (断线重连)
- vmware虚拟机ubuntu桥接上网
- spring与mybatis整合实例
- Android Studio中的build.gradle文件解析
- 使用rz命令向Linux上传文件
- windows环境下使用jenkins自动部署发布项目(eclipse + svn + maven + tomcat + jenkins),注意是windows环境
- C/C++中extern关键字详解
- Linux 常用的目录处理命令总结
- 初学acmer--读《算法算法竞赛入门经典》笔记(12) P73-74
- Guava Cache源码解析
- 记住我