1. 程式人生 > >Spring boot 整合MyBatis(1)

Spring boot 整合MyBatis(1)

一、Spring boot整合MyBatis

Mybatis提供了mybatis-spring-boot-starter 目前 1.3.x 是最新版

https://github.com/mybatis/spring-boot-startergit下載地址

http://www.mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/使用文件

1、Maven方式引入:

<dependency>
    <groupId>org.mybatis.spring.boot</
groupId>
<artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.1-SNAPSHOT</version> </dependency>
Gradle方式引入:

dependencies {
    compile("org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.1-SNAPSHOT")
}

2、properties配置

spring.datasource.url = jdbc:
mysql://localhost:3306/spring-boot?useUnicode=true&characterEncoding=utf-8 spring.datasource.username = root spring.datasource.password = root spring.datasource.driverClassName = com.mysql.jdbc.Driver
#可選配置
# 初始化大小,最小,最大
spring.datasource.initialSize=10
spring.datasource.minIdle=10
spring.datasource.maxActive=20
# 配置獲取連線等待超時的時間 spring.datasource.maxWait=80000 # 配置間隔多久才進行一次檢測,檢測需要關閉的空閒連線,單位是毫秒 spring.datasource.timeBetweenEvictionRunsMillis=80000 # 配置一個連線在池中最小生存的時間,單位是毫秒 spring.datasource.minEvictableIdleTimeMillis=500000 # 通過connectProperties屬性來開啟mergeSql功能;慢SQL記錄 spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 # 合併多個DruidDataSource的監控資料 spring.datasource.useGlobalDataSourceStat=true #指定連線的事務的預設隔離級別. spring.datasource.default-transaction-isolation #指定driver的類名,預設從jdbc url中自動探測. spring.datasource.driver-class-name #是否採用FIFO返回連線. spring.datasource.fair-queue #使用Hikari connection pool時,在心跳檢查時傳遞的屬性 spring.datasource.health-check-properties.[key] #指定連線多久沒被使用時,被設定為空閒,預設為10ms spring.datasource.idle-timeout #當初始化連線池時,是否忽略異常. spring.datasource.ignore-exception-on-pre-load

3、使用註解方式寫SQL語句

增刪查改分別為: @Select  @Update    @Delete    @Insert


 

例子:

@Select("select * from admin")
@Update("update admin a set a.userName='二十歲以後'")
@Delete("delete from admin  where userName='二十歲以後'")
@Insert("insert into admin (UserName,PassWord) values('二十歲以後','123')")

引數的引用 :@Param

例子: 將註解括號內的引數進行引用 ,SQL語句中使用#{} 或 ${} 的方式都可以 ,使用#時變數是佔位符,可以防止sql注入。而$使用時,變數就是直接追加在sql中,一般會有sql注入問題。 還有就是通過#方式獲取變數時,可能會出現與資料庫的欄位的型別不匹配錯誤 ,比如時間型別可以使用$。

@Select("select * from admin where User_Name=#{UserName} ")
public Admin selectUser(@param("UserName")  String UM);
不使用@Param註解的情況,那麼引數只能有一個,並且是Javabean。在SQL語句裡可以引用JavaBean的屬性,而且只能引用JavaBean的屬性。 例子如下:
// 這裡id是Admin的屬性
@Select("SELECT * from admin where id = ${id}")
public Admin selectAdminById(Admin admin);
 結果對映列表:  @Results、 @Result例子:  @Results是結果對映列表,@Result中property是Admin類的屬性名,colomn是資料庫表的欄位名 。將資料庫結果集和我JAVA中POJO類的欄位做繫結。

@Results({
		  @Result(property="Id",column="UserId"),
		  @Result(property="UserName",column="UserName")
	  })
	  @Select("select UserId, UserName from admin  where  a.RealName=#{RM}")
	  public Admin selectAdminByRM(@Param("RM") String RM);

  宣告Mapper介面 : @Mapper

例子: @Mapper將UserDao宣告為一個Mapper介面。

package cn.yy.dao;

@Mapper
public interface UserDao {

	@Results({
		  @Result(property="Id",column="UserId"),
		  @Result(property="UserName",column="UserName")
	  })
	  @Select("select UserId, UserName from admin  where  a.RealName=#{RM}")
	  public Admin selectAdminByRM(@Param("RM") String RM);
}
相關轉載地址 點選進入原創部落格