springboot3整合mybatis框架的流程
1. 环境准备
- springboot v3.3.2
- maven 3.9.1
- jdk 17
2. 准备数据库
在本地生成t_user
表,主要包含用户名,id,昵称三个字段。
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (
`user_name` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL,
`user_id` int NOT NULL,
`nick_name` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`user_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = Dynamic;
INSERT INTO `t_user` VALUES ('jike', 2023001, 'jik');
INSERT INTO `t_user` VALUES ('mike', 2023002, 'mik');
3. 导入依赖
分别是:web启动依赖,mybatis启动依赖,mysql数据库插件,springboot配置处理器(可选),lombok插件,以及springboot测试依赖。
注意这里mybatis的版本尽量使用比较新的版本,如果是3.0.0 则会抛出异常
<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>3.0.3</version>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</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>
</dependencies>
4. 编写User类 TUser.java
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TUser {
private String userName;
private int userId;
private String nickName;
}
5. Mapper接口 UserMapper.java
@Mapper
public interface UserMapper {
TUser selectUserById(@Param("id") int id);
}
6. 生成与接口对应的UserMapper.xml,可以借助MybatisX插件生成
<mapper namespace="com.example.demo01.mapper.UserMapper">
<select id="selectUserById" resultType="com.example.demo01.pojo.TUser" parameterType="int">
select * from t_user where user_id = #{id};
</select>
</mapper>
7. service层接口UserService和实现类UserServiceImpl
public interface UserService {
TUser selectUserById(int id);
}
注意实现类上标注@Service注解,其中自动注入UserMapper作为实现,UserMapper接口不需要实现,因为MyBatis通过动态代理机制为Mapper接口生成了实现类,并在运行时进行方法调用。
@Service
public class UserServiceImpl implements UserService {
@Autowired
UserMapper userMapper;
@Override
public TUser selectUserById(int id) {
return userMapper.selectUserById(id);
}
}
8 Controller
@RestController
public class UserController {
@Autowired
UserService userService;
@GetMapping("/user/{id}")
public TUser selecetUser(@PathVariable("id") int userId){
System.out.println(userId);
return userService.selectUserById(userId);
}
}
9 配置文件
配置文件中除了数据源的配置之外,就是mybatis中xml文件的位置,以及当数据库中的字段是下划线,但相中中的实体类是驼峰命名时,需要将下划线映射成驼峰。
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/mydatabase
username: root
password: 1234
mybatis:
mapper-locations: classpath:/mapper/*.xml
configuration:
map-underscore-to-camel-case: true
debug: true
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。