springboot中怎么整合Mybatis組件,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
Spring的優點分析
Spring是Java企業版(Java Enterprise Edition,JEE,也稱J2EE)的輕量級代替品。無需開發重量級的Enterprise JavaBean(EJB),Spring為企業級Java開發提供了一種相對簡單的方法,通過依賴注入和面向切面編程,用簡單的Java對象(Plain Old Java Object,POJO)實現了EJB的功能。
Spring的缺點分析
雖然Spring的組件代碼是輕量級的,但它的配置卻是重量級的。一開始,Spring用XML配置,而且是很多XML配置。Spring 2.5引入了基于注解的組件掃描,這消除了大量針對應用程序自身組件的顯式XML配置。Spring 3.0引入了基于Java的配置,這是一種類型安全的可重構配置方式,可以代替XML。
所有這些配置都代表了開發時的損耗。因為在思考Spring特性配置和解決業務問題之間需要進行思維切換,所以編寫配置擠占了編寫應用程序邏輯的時間。和所有框架一樣,Spring實用,但與此同時它要求的回報也不少。
除此之外,項目的依賴管理也是一件耗時耗力的事情。在環境搭建時,需要分析要導入哪些庫的坐標,而且還需要分析導入與之有依賴關系的其他庫的坐標,一旦選錯了依賴的版本,隨之而來的不兼容問題就會嚴重阻礙項目的開發進度。
引入mybatis組件
pom.xml中加入
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId></dependency><dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.1</version></dependency>
application.properties中加入
#dateSourcespring.datasource.driverClassName=com.mysql.cj.jdbc.Driverspring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=falsespring.datasource.username=rootspring.datasource.password=root# mybatis# 下劃線轉駝峰開啟mybatis.configuration.map-underscore-to-camel-case=true# mapper掃描位置mybatis.mapper-locations=classpath:mapper/*.xml
需要說明的是,我引入的mysql驅動為 com.mysql.cj.jdbc.Driver,而不是 com.mysql.jdbc.Driver。以下是一些參數的說明;
serverTimezone:該驅動需要指定某時區。 useUnicode:開啟指定編碼。 characterEncoding:指定讀取數據庫的編碼,因為項目采用UTF-8,存取數據庫信息時保持一致。 useSSL:是否建立SSL連接,我顯示選的否,因為這要為服務器證書驗證提供信任庫,暫時沒條件。
代碼實戰
本地的 mysql 版本為 5.7.20。
建表語句
CREATE TABLE USER_INFO( user_id DECIMAL(10) PRIMARY KEY NOT NULL, user_name VARCHAR(20) DEFAULT "" NOT NULL);CREATE UNIQUE INDEX USER_INFO_user_id_uindex ON USER_INFO (user_id);ALTER TABLE USER_INFO COMMENT = '用戶基本信息表';
插入數據
INSERT INTO test.user_info (user_id, user_name) VALUES (1, '特朗普');INSERT INTO test.user_info (user_id, user_name) VALUES (2, '唐納德');
現在的項目路徑為
在SpringBoot的入口類中加 @MapperScan 注解,以掃描 DAO 類,不用在每個dao接口加個@Mapper 注解。
package com.example;import org.mybatis.spring.annotation.MapperScan;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication@MapperScan("com.example.dao")public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); }}
注:如果沒有分拆項目成微服務架構,或分布式架構,application主類中的@SpringBootApplication自動會掃描本包中的@Controller,@Service,@Resource等,是不需要浪費另一行@ComponentScan注解,配置路徑的。
UserController.java
package com.example.controller;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.ResponseBody;import com.example.service.IUserService;@Controller@RequestMapping("user")public class UserController { @Autowired private IUserService userService; @RequestMapping("/queryUser") @ResponseBody void queryUser() { this.userService.queryUser(); }}
IUserService.java
package com.example.service;public interface IUserService { void queryUser();}
UserServiceIml.java
package com.example.service;import com.example.dao.UserDao;import com.example.entity.UserEntity;import org.springframework.stereotype.Service;import javax.annotation.Resource;import java.util.List;@Service("userService")public class UserServiceIml implements IUserService { @Resource private UserDao userDao; @Override public void queryUser() { List<UserEntity> userList = this.userDao.queryUser(); System.out.println("================"); System.out.println(userList); System.out.println("================"); }}
注:如果是SSM架構過來的,這個@Resource注解可能比較陌生,因為我估計會和我之前一樣用@Autowired,但是我是沒有在dao層用 @Repository 注解的,之前用了在主類用了@MapperScan自動去掃描所有的dao,所以不能再用之前的@Autowired。
UserDao.java
package com.example.dao;import com.example.entity.UserEntity;import java.util.List;public interface UserDao { List<UserEntity> queryUser();}
UserEntity.java
package com.example.entity;public class UserEntity { private long userId; private String userName; public long getUserId() { return userId; } public void setUserId(long userId) { this.userId = userId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } @Override public String toString() { return "UserEntity{" + "userId=" + userId + ", userName='" + userName + '\'' + '}'; }}
關于springboot中怎么整合Mybatis組件問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。