SpringBoot如何通過yml方式整合Mybatis
本來打算寫個(gè)使用Sharding-JDBC的例程,但是在搭建Mybatis的過程中,一波三折,因?yàn)楹镁脹]搭建項(xiàng)目了,另外加上換了電腦。所以很破折,在這里記錄一下Spring Boot整合Mybatis吧??赡芎芎?jiǎn)單,但是我長(zhǎng)時(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的文件
以上就是本文的全部?jī)?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-10Springboot+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-07Java中通過反射實(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