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);
}
相关转载地址 点击进入原创博客

猜你喜欢

转载自blog.csdn.net/qq_36464264/article/details/78605248