MyBatis的使用

Mybatis的使用

Mybatis的使用

使用Spring Boot集成MyBatis构建一个基础的Java Web项目通常涉及以下步骤:

步骤1:初始化Spring Boot项目

1.创建新的Spring Boot项目

选择Web作为基本依赖(spring-boot-starter-web),同时添加MyBatis和对应的数据库驱动依赖,例如MySQL的连接器(mysql-connector-java)以及MyBatis Spring Boot Starter(mybatis-spring-boot-starter)。

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <!-- 根据最新的版本号替换 -->
        <version>2.2.0</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <!-- 根据最新的版本号替换 -->
        <version>8.0.28</version>
        <!-- 如果项目运行阶段不需要这个依赖,则可将其范围设为runtime -->
        <scope>runtime</scope>
    </dependency>
</dependencies>

步骤2:配置数据库连接

application.propertiesapplication.yml中配置数据库连接信息:

application.yml

spring:
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/db?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false
    username: 123
    password: 123
    #阿里druid连接池驱动配置信息
    type: com.alibaba.druid.pool.DruidDataSource
    #连接池的配置信息
    #初始化大小,最小,最大
    initialSize: 2
    minIdle: 2
    maxActive: 3
    #配置获取连接等待超时的时间
    maxWait: 6000
    pool-prepared-statements: true
    max-pool-prepared-statement-per-connection-size: 10
    #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
    timeBetweenEvictionRunsMillis: 60000
    #配置一个连接在池中最小生存的时间,单位是毫秒
    minEvictableIdleTimeMillis: 300000
    validationQuery: SELECT 1 FROM DUAL
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    #打开PSCache,并且指定每个连接上PSCache的大小
    poolPreparedStatements: true
    maxPoolPreparedStatementPerConnectionSize: 20
    #配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
    filters: stat,wall,log4j
    #通过connectProperties属性来打开mergeSql功能;慢SQL记录
    connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

步骤3:配置MyBatis

MyBatis的许多配置在引入mybatis-spring-boot-starter后会自动完成,但你可能还需要配置Mapper接口和XML映射文件的位置:


mybatis:
  #实体扫描,多个package用逗号或者分号分隔
  typeAliasesPackage: cn.hanyuanhun.**.entity
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
mybatis-plus:
  mapper-locations: classpath*:cn/hanyuanhun/projectname/mapper/xml/*.xml
  #或者
  #mapper-locations: classpath:mapper/*.xml

步骤4:创建实体类

根据数据库表结构创建Java实体类(POJO)。


@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("db.users")
public class User {
    private Long id;
    private String username;
    // getters and setters...
}

步骤5:创建Mapper接口与映射文件

  • 创建一个Mapper接口,用于定义SQL查询方法:
public interface UserMapper {
    UserDto selectUserById(Long id);
    // 其他方法...
}
  • 对应的UserMapper.xml映射文件,放置在配置的mapper-locations路径下:
<mapper namespace="com.example.demo.mapper.UserMapper">
    <select id="selectUserById" resultType="com.example.demo.dto.UserDto">
        SELECT * FROM user WHERE id = #{id}
    </select>
    <!-- 其他映射 -->
</mapper>

步骤6:配置Service与Controller

  • 创建一个Service层,注入UserMapper并实现业务逻辑。
@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;

    public UserDto getUserById(Long id) {
        return userMapper.selectUserById(id);
    }
    // ...
}
  • 创建一个Controller层,注入UserService
@RestController
@RequestMapping("/users")
public class UserController {
    @Autowired
    private UserService userService;

    @GetMapping("/")
    public User getUser(@RequestParam("id")  Long id) {
        return userService.getUserById(id);
    }
    // ...
}

步骤7:启动和测试

  • 最后,编写主启动类,使用@SpringBootApplication注解启动Spring Boot应用。
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
  • 启动应用后,可以通过HTTP客户端或浏览器访问配置好的API接口,测试数据库操作是否正常。

以上步骤概述了一个基础的Spring Boot集成MyBatis的开发流程,实际开发中还可能涉及到事务管理、分页查询、自定义类型处理器、二级缓存等相关配置和功能实现。

原文链接 https://www.hanyuanhun.cn | https://node.hanyuanhun.cn

posted @   汉源魂  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示