三、Spring boot整合Mybatis
1.pom.xml文件添加依赖包
<!-- mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
<build>
<!-- 添加资源 -->
<resources>
<resource>
<directory>src/main/resources</directory>
<!-- src/main/resources下的指定资源放行 -->
<includes>
<include>**/*.properties</include>
<include>**/*.yml</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
2.application.yml配置文件加入Mybatis配置信息
mybatis:
mapper-locations: classpath*:/mapper/*.xml # sql语句存放的地方
type-aliases-package: com.hxb.mayan.entities # 所有Entity别名类所在包
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 打印SQL语句
3.xxxMapper.xml文件内容
<mapper namespace="com.hxb.mayan.dao.PaymentDao">
<resultMap id="BaseResultMap" type="com.hxb.mayan.entities.Payment">
<id column="payment_id" property="paymentId" jdbcType="DOUBLE"/>
<result column="payment_serial" property="paymentSerial" jdbcType="VARCHAR"/>
</resultMap>
<insert id="create" parameterType="Payment" useGeneratedKeys="false" keyProperty="paymentId">
INSERT INTO payment (PAYMENT_SERIAL) VALUES(#{paymentSerial})
</insert>
<select id="getPaymentById" parameterType="Integer" resultMap="BaseResultMap" >
SELECT * FROM payment WHERE payment_id = #{paymentId}
</select>
</mapper>
① xxxMapper.xml文件名称必须与使用@Mapper的接口一致
② namespace:需要与使用@Mapper的接口对应
③ 标签中的id必须与@Mapper的接口中的方法名一致,且参数一致
④ useGeneratedKeys:当数据库新增数据主键自增(Mysql)的时候插入数据成功时,默认会返回1,并且useGeneratedKeys = “true”(不写则默认)。keyProperty="paymentId"需要填写数据库主键对应的实体类属性;当数据库新增数据主键不是自增的时候(Oracle),并且一定要写useGeneratedKeys = “false”。插入成功后,才会返回1,否侧会报错。
3.xxxMapper.xml文件内JdbcType与Oracle、MySql数据类型对应列表
<resultMap id="BaseResultMap" type="com.hxb.mayan.entities.Payment">
<id column="payment_id" property="paymentId" jdbcType="DOUBLE"/>
<result column="payment_serial" property="paymentSerial" jdbcType="VARCHAR"/>
</resultMap>
JdbcType与Oracle、MySql数据类型对应列表
Mybatis | JdbcType | Oracle | MySql |
---|---|---|---|
JdbcType | ARRAY | ||
JdbcType | BIGINT | BIGINT | |
JdbcType | BINARY | ||
JdbcType | BIT | BIT | |
JdbcType | BLOB | BLOB | BLOB |
JdbcType | BOOLEAN | ||
JdbcType | CHAR | CHAR | CHAR |
JdbcType | CLOB | CLOB | TEXT |
JdbcType | CURSOR | ||
JdbcType | DECIMAL | DECIMAL | DECIMAL |
JdbcType | DOUBLE | NUMBER | DOUBLE |
JdbcType | FLOAT | FLOAT | FLOAT |
JdbcType | INTEGER | INTEGER | INTEGER |
JdbcType | LONGVARBINARY | ||
JdbcType | LONGVARCHAR | LONGVARCHAR | |
JdbcType | NCHAR | NCHAR | |
JdbcType | NCLOB | NCLOB | |
JdbcType | NULL | ||
JdbcType | NUMERIC | NUMERIC/NUMBER | NUMERIC |
JdbcType | NVARCHAR | ||
JdbcType | OTHER | ||
JdbcType | REAL | REAL | REAL |
JdbcType | SMALLINT | SMALLINT | SMALLINT |
JdbcType | STRUCT | ||
JdbcType | TIME | ||
JdbcType | TIMESTAMP | TIMESTAMP | TIMESTAMP/DATETIME |
JdbcType | TINYINT | TINYINT | |
JdbcType | UNDEFINED | ||
JdbcType | VARBINARY | ||
JdbcType | VARCHAR | VARCHAR | VARCHAR |