SpringBoot如何通過yml方式整合Mybatis
本來打算寫個(gè)使用Sharding-JDBC的例程,但是在搭建Mybatis的過程中,一波三折,因?yàn)楹镁脹]搭建項(xiàng)目了,另外加上換了電腦。所以很破折,在這里記錄一下Spring Boot整合Mybatis吧??赡芎芎唵危俏议L時(shí)間沒用忘記了,我這里備忘一下吧。
一、項(xiàng)目目錄結(jié)構(gòu)
注意這里Application文件的位置,它是與controller、entity、mapper、service等包處于并列的關(guān)系。

二、數(shù)據(jù)庫文件
SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for t_user_00 -- ---------------------------- DROP TABLE IF EXISTS `t_user_00`; CREATE TABLE `t_user_00` ( `id` int(0) NOT NULL AUTO_INCREMENT, `user_id` int(0) NOT NULL, `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `age` int(0) NOT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; SET FOREIGN_KEY_CHECKS = 1;
三、pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.13.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.gougou</groupId>
<artifactId>shardingjdbc-shardingtable-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>shardingjdbc-shardingtable-demo</name>
<description>shardingjdbc-shardingtable-demo</description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
四、application.yml
# 數(shù)據(jù)源 spring: application: name: shardingjdbc-shardingtable-demo datasource: url: jdbc:mysql://localhost:3306/sharding_0?serverTimezone=UTC username: root password: root driver-class-name: com.mysql.jdbc.Driver dbcp2: min-idle: 5 # 數(shù)據(jù)庫連接池的最小維持連接數(shù) initial-size: 5 # 初始化連接數(shù) max-total: 5 # 最大連接數(shù) max-wait-millis: 150 # 等待連接獲取的最大超時(shí)時(shí)間 # mybatis配置 mybatis: mapper-locations: classpath:mapper/*.xml # mapper映射文件位置 type-aliases-package: com.gouggou.shardingtable.entity # 實(shí)體類所在的位置 configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #用于控制臺(tái)打印sql語句
五、啟動(dòng)類Application
說明:
1、@MapperScan的:掃描mapper接口的位置
2、@ComponentScan:如果Application文件的位置不是與controller、entity、mapper、service等包處于并列的關(guān)系。就要用此注解,否則可以不用;
@MapperScan("com.gouggou.shardingtable.mapper")
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
六、controller
@RequestMapping("student")
@RestController
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("save")
public String save() {
User user = new User();
user.setUserId(new Random().nextInt( 1000 ) + 1);
user.setName("張三"+user.getUserId());
user.setAge(new Random().nextInt( 80 ) + 1);
userService.insert(user);
return user.getName()+"創(chuàng)建成功!";
}
}
七、service
public interface UserService {
Integer insert(User u);
List<User> findAll();
List<User> findByUserIds(List<Integer> userIds);
}
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public Integer insert(User u) {
return userMapper.insert(u);
}
@Override
public List<User> findAll() {
return userMapper.findAll();
}
@Override
public List<User> findByUserIds(List<Integer> userIds) {
return userMapper.findByUserIds(userIds);
}
}
八、entity
@Data
public class User implements Serializable {
private static final long serialVersionUID = -5514139686858156155L;
private Integer id;
private Integer userId;
private String name;
private Integer age;
}
九、Mapper
@Repository
public interface UserMapper {
Integer insert(User u);
List<User> findAll();
List<User> findByUserIds(List<Integer> userIds);
}
<?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.gouggou.shardingtable.mapper.UserMapper" >
<resultMap id="resultMap" type="com.gouggou.shardingtable.entity.User" >
<id column="id" property="id" jdbcType="INTEGER" />
<result column="user_id" property="userId" jdbcType="INTEGER" />
<result column="name" property="name" jdbcType="VARCHAR" />
<result column="age" property="age" jdbcType="INTEGER" />
</resultMap>
<insert id="insert">
insert into t_user_00 (user_id,name,age) values (#{userId},#{name},#{age})
</insert>
<select id="findAll" resultMap="resultMap">
select <include refid="columnsName"/> from t_user_00
</select>
<select id="findByUserIds" resultMap="resultMap">
select <include refid="columnsName"/> from t_user_00 where user_id in (
<foreach collection="list" item="item" separator=",">
#{item}
</foreach>
)
</select>
<sql id="columnsName">
id,user_id,name,age
</sql>
</mapper>
十、遇到的問題
2、maven倉庫中產(chǎn)生后綴是LastUpdated的文件
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 解決Spring boot整合mybatis,xml資源文件放置及路徑配置問題
- SpringBoot整合mybatis-generator-maven-plugin的方法
- springboot整合mybatis-plus 實(shí)現(xiàn)分頁查詢功能
- Spring Boot整合mybatis使用注解實(shí)現(xiàn)動(dòng)態(tài)Sql、參數(shù)傳遞等常用操作(實(shí)現(xiàn)方法)
- springboot2.3 整合mybatis-plus 高級(jí)功能(圖文詳解)
- 解決SpringBoot整合Mybatis掃描不到Mapper的問題
- SpringBoot整合MybatisSQL過濾@Intercepts的實(shí)現(xiàn)
- Spring整合Mybatis的全過程
相關(guān)文章
Maven導(dǎo)入Junit4后在test中無法引用問題
在使用Maven進(jìn)行項(xiàng)目管理時(shí),可能會(huì)遇到導(dǎo)入依賴和打開項(xiàng)目結(jié)構(gòu)的問題,本文通過實(shí)際經(jīng)驗(yàn),提供了一些解決方法和技巧,希望能幫助遇到相同問題的開發(fā)者,此外,還鼓勵(lì)大家多多支持和分享個(gè)人經(jīng)驗(yàn),以便于共同進(jìn)步2024-10-10
Springboot+Shiro+Mybatis+mysql實(shí)現(xiàn)權(quán)限安全認(rèn)證的示例代碼
Shiro是Apache?的一個(gè)強(qiáng)大且易用的Java安全框架,執(zhí)行身份驗(yàn)證、授權(quán)、密碼學(xué)和會(huì)話管理,Shiro?主要分為兩個(gè)部分就是認(rèn)證和授權(quán)兩部分,這篇文章主要介紹了Springboot+Shiro+Mybatis+mysql實(shí)現(xiàn)權(quán)限安全認(rèn)證的示例代碼,需要的朋友可以參考下2024-07-07
Java中通過反射實(shí)現(xiàn)代理Proxy代碼實(shí)例
這篇文章主要介紹了Java中通過反射實(shí)現(xiàn)代理Proxy代碼實(shí)例,java實(shí)現(xiàn)代理可以通過java.lang.reflect.Proxy接口結(jié)合java.lang.reflect.InvocationHandler來實(shí)現(xiàn),需要的朋友可以參考下2023-08-08

