springboot关于mybatis整合及配置

MyBatis注解开发

1.加入mybatis的starter , mysql驱动(8…32)

pom

<!--mybatis启动器-->
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>3.0.2</version>
		</dependency>

		<dependency>
			<groupId>com.mysql</groupId>
			<artifactId>mysql-connector-j</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter-test</artifactId>
			<version>3.0.2</version>
			<scope>test</scope>
		</dependency>
	</dependencies>

2.创建实体类 XXXPO ,XXXEntity ,XXXDomain

package com.powernode.mybatis.module;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @author pigO
 * @version 1.0
 * @date 2023-10-11
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private String userId;
    private String cardType;
    private String cardNo;
    private String userName;
    private String userSex;
    private String userAge;
    private String userRole;
}

在这里插入图片描述

3.创建Mapper接口, 在接口中定义方法, 在方法的上面使用合适的注解

定义UserMapper

package com.powernode.mybatis.mapper;

import com.powernode.mybatis.module.User;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository;

/**
 * @author pigO
 * @version 1.0
 * @date 2023-10-11
 */
@Repository
public interface UserMapper {
}
@Select: 查询 ,使用@Results和@Result做结果映射。
@Select("""
            select user_id, card_type, card_no, user_name,
            user_sex, user_age, user_role
            from user
            where user_id = #{userId}
            """)
    @Results(id = "baseResultMap", value = {
            @Result(id = true, column = "user_id", property = "userId"),
            @Result(column = "card_type", property = "cardType"),
            @Result(column = "card_no", property = "cardNo"),
            @Result(column = "user_name", property = "userName"),
            @Result(column = "user_sex", property = "userSex"),
            @Result(column = "user_age", property = "userAge"),
            @Result(column = "user_role", property = "userRole"),
    }

    )
    User selectById(@Param("userId") String id);

或者使用@ResultMap映射

@Results(id = "baseResultMap", value = {
            @Result(id = true, column = "user_id", property = "userId"),
            @Result(column = "card_type", property = "cardType"),
            @Result(column = "card_no", property = "cardNo"),
            @Result(column = "user_name", property = "userName"),
            @Result(column = "user_sex", property = "userSex"),
            @Result(column = "user_age", property = "userAge"),
            @Result(column = "user_role", property = "userRole"),
    }

    )
    @Select("")
    User userMapper();

    @Select("""
            select user_id, card_type, card_no, user_name,
            user_sex, user_age, user_role
            from user
            where user_id = #{userId}
            """)
    @ResultMap("baseResultMap")
    User selectById(@Param("userId") String id);

运行结果
在这里插入图片描述

@Insert:新增
   @Insert("""
            insert into user (user_id, card_type, card_no, user_name, user_sex, user_age, user_role)
            values (#{userId}, #{cardType}, #{cardNo}, #{userName}, #{userSex}, #{userAge}, #{userRole})
            """)
    int insertUser(User user);

运行结果
在这里插入图片描述

@Update: 更新
  @Update("""
            update user set user_name = #{userName} where user_id = #{userId}
            """)
    int updateUserName(String userId, String userName);

运行结果
在这里插入图片描述

@Delete: 删除
@Delete("""
            delete from user where user_id = #{userId}
            """)
    int deleteUserById(String userId);

运行结果
在这里插入图片描述

4.在启动上面,加入@MapperScan

@MapperScan(basePackages = “com.powernode.mybatis.mapper”)

package com.powernode.mybatis;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@MapperScan(basePackages = "com.powernode.mybatis.mapper")
@SpringBootApplication
public class Lesson05MybatisApplication {

	public static void main(String[] args) {
		SpringApplication.run(Lesson05MybatisApplication.class, args);
	}

}

5.application.properties
1) 定义数据库连接
2) mybatis设置
日志
驼峰命名支持

# 配置数据源
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/springmvc?serverTimezone=Asia/Shanghai&userUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false
spring.datasource.username=root
spring.datasource.password=0602


#驼峰命名
mybatis.configuration.map-underscore-to-camel-case=true

#日志
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

一对一

@Results({
@Result(id = true, column = "id", property = "id")
@Result(column = "user_id", property = "userId")
@Result(column = "title", property = "title")
@Result(column = "summary", property = "summary"),Result(column ="read_count",property = "readCount")
@Result(column = "create_time", property = "createTime")
@Result(column = "update_time",property = "updateTime")
//articleDetail 为一个对象时,可以使用@One注解
@Result(column ="id", property = "articleDetail"
one = @One(select = "com.bjpowernode.mybatis.mapper.ArticleoneToOneMapper.selectDetail"fetchType = FetchType.LAZY))//懒加载
}
Article selectAlArticle(Integer id);

一对多

@Results({
@Result(id = true, column = "id", property = "id")
@Result(column = "user_id", property = "userId")
@Result(column = "title", property = "title")
@Result(column = "summary", property = "summary"),Result(column ="read_count",property = "readCount")
@Result(column = "create_time", property = "createTime")
@Result(column = "update_time",property = "updateTime")
//articleDetail 为多个值时,可以使用@Many注解
@Result(column = "id", property = "comments"
many = @Many(select = "com.bjpowernode.mybatis.mapper,ArticleCommentMapper,selectComments",
fetchType = FetchType .LAZY))//懒加载
}
ArticleEntity selectArticleComment(Integer id);

连接池设置

spring:
	datasource:
		type: com.zaxxer.hikari.HikariDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl:jdbc:mysql://localhost:3306/blog?serverTimezone=Asia/Shanghaiusername: root
		password: 123456
		hikari:
		auto-commit: true# # connections = ((cpu 核心数*2) + 磁盘数量)近似值。默认 10maximum-pool-size: 10
		#最小连接数,默认 10,不建议设置。默认与maximum-pool-size 一样大小。推荐使用固定大小的连接池
		minimum-idle: 10
		#获取连接时,检测语句
		connection-test-query: select 1
		#
		#连接超时,默认 30 秒
		# 控制客户端在获取池中 Connection 的等待时间,
		# 如果没有连接可用的情况下超过该时间,则抛出 SQLException 异常
		##
		connection-timeout: 20000
		#其他属性
		data-source-properties:cachePrepStmts: truedataSource.cachePrepStmtst: truedataSource.prepStmtCacheSize: 250dataSource.prepStmtCacheSqlLimit: 204dataSource.useServerPrepStmts: true

MyBatis的项设置,在application 文件中“mybatis”开头进行设置全部设置参考:https://mybatis.org/mybatis-3/zh/configuration.html#settings

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值