SpringBoot整合MyBatis
2021/10/18 23:16:47
本文主要是介绍SpringBoot整合MyBatis,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
SpringBoot整合MyBatis
系统要求
Java 8+
springBoot2.5 +
创建springBoot项目工程
导入依赖
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.2.6</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <!--Druid starter--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.22</version> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.0</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
项目结构目录
配置application.yaml
spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3307/webapp1?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8 username: webapp1 password: webapp1 type: com.alibaba.druid.pool.DruidDataSource #Spring Boot 默认是不注入这些属性值的,需要自己绑定 #druid 数据源专有配置 # 初始化大小,最小,最大 initialSize: 5 minIdle: 5 maxActive: 200 # 配置获取连接等待超时的时间 maxWait: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 timeBetweenEvictionRunsMillis: 60000 # 配置一个连接在池中最小生存的时间,单位是毫秒 minEvictableIdleTimeMillis: 300000 # 用来检测连接是否有效的sql,要求是一个查询语句 validationQuery: SELECT 1 FROM DUAL # 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。 testWhileIdle: true # 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能 testOnBorrow: false # 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。 testOnReturn: false # 是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。 poolPreparedStatements: true # 要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。 max-pool-prepared-statement-per-connection-size: 50 #配置监控统计拦截的filters,stat:监控统计、log4j:日志记录、wall:防御sql注入 #如果允许时报错 java.lang.ClassNotFoundException: org.apache.log4j.Priority #则导入 log4j 依赖即可,Maven 地址:https://mvnrepository.com/artifact/log4j/log4j filters: stat,wall,log4j # 合并多个DruidDataSource的监控数据 useGlobalDataSourceStat: true # 通过connectProperties属性来打开mergeSql功能;慢SQL记录 connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500 mybatis: #sql映射文件的位置 # mapper-locations: classpath:com/xiang/mapper/*.xml mapper-locations: classpath:mapper/*.xml #开启驼峰命名转化 configuration: map-underscore-to-camel-case: true #开启别名 type-aliases-package: com.xiang
创建User类
package com.xiang.pojo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import org.springframework.stereotype.Component; import java.util.Date; /** * Created by IntelliJ IDEA. * User: xiang * Date: 2021/10/17 23:52 */ @Component @Data @NoArgsConstructor @AllArgsConstructor public class User { private int id; private String username; private String age; private Date birthday; }
创建UserMapper
package com.xiang.mapper; import com.xiang.pojo.User; import org.apache.ibatis.annotations.Mapper; import org.mybatis.spring.annotation.MapperScan; import org.springframework.context.annotation.ComponentScan; import org.springframework.stereotype.Repository; import java.util.List; /** * Created by IntelliJ IDEA. * User: xiang * Date: 2021/10/17 23:54 */ @Mapper @Repository public interface UserMapper { User findById(int id); List<User> findAll(); }
创建UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.xiang.mapper.UserMapper"> <select id="findById" resultType="user"> select * from user where id = #{id} </select> <select id="findAll" resultType="user"> select * from user </select> </mapper>
创建UserService
package com.xiang.service; import com.xiang.pojo.User; import java.util.List; /** * Created by IntelliJ IDEA. * User: xiang * Date: 2021/10/18 15:01 */ public interface UserService { User findById(int id); List<User> findAll(); }
创建UserServiceImpl
package com.xiang.service.impl; import com.xiang.mapper.UserMapper; import com.xiang.pojo.User; import com.xiang.service.UserService; import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.ComponentScan; import org.springframework.stereotype.Service; import java.util.List; /** * Created by IntelliJ IDEA. * User: xiang * Date: 2021/10/18 15:02 */ @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public User findById(int id) { return userMapper.findById(id); } @Override public List<User> findAll() { return userMapper.findAll(); } }
运行测试
package com.xiang; import com.alibaba.druid.pool.DruidDataSource; import com.xiang.pojo.User; import com.xiang.service.impl.UserServiceImpl; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.jdbc.core.JdbcTemplate; import javax.sql.DataSource; import java.sql.Connection; import java.sql.SQLException; import java.util.List; import java.util.Map; @SpringBootTest class SpringBootDatabaseApplicationTests { @Autowired UserServiceImpl userService; /*** * 根据id查 */ @Test public void findById(){ User user = userService.findById(1); System.out.println(user); } /** * 查所有 */ @Test public void findAll(){ System.out.println(userService.findAll()); System.out.println("/*******************************************/"); List<User> userList = userService.findAll(); for (User user : userList) { System.out.println(user); } } }
测试运行结果
创建UserController
package com.xiang.controller; import com.xiang.pojo.User; import com.xiang.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; /** * Created by IntelliJ IDEA. * User: xiang * Date: 2021/10/18 22:03 */ @Controller public class UserController { @Autowired UserService userService; @RequestMapping("findById") @ResponseBody public String findById(@RequestParam("id") int id) { User byId = userService.findById(id); return byId.toString(); } }
前端运行结果
这篇关于SpringBoot整合MyBatis的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-28知识管理革命:文档软件的新玩法了解一下!
- 2024-11-28低代码应用课程:新手入门全攻略
- 2024-11-28哪些办公软件适合团队协作,且能够清晰记录每个阶段的工作进展?
- 2024-11-28全栈低代码开发课程:零基础入门到初级实战
- 2024-11-28拖动排序课程:轻松掌握课程拖动排序功能
- 2024-11-28如何高效管理数字化转型项目
- 2024-11-28SMART法则好用吗?有哪些项目管理工具辅助实现?
- 2024-11-28深度剖析:6 款办公软件如何构建设计团队项目可视化管理新生态?
- 2024-11-28HTTP缓存课程:新手入门指南
- 2024-11-28实战丨证券 HTAP 混合业务场景的难点问题应对