欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

springboot快速整合Mybatis組件的方法(推薦)

 更新時(shí)間:2019年11月25日 11:49:36   作者:lgx211  
Spring Boot是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來(lái)簡(jiǎn)化新Spring應(yīng)用的初始搭建以及開(kāi)發(fā)過(guò)程。這篇文章主要介紹了springboot快速整合Mybatis組件的方法,需要的朋友可以參考下

Spring Boot簡(jiǎn)介

Spring Boot是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來(lái)簡(jiǎn)化新Spring應(yīng)用的初始搭建以及開(kāi)發(fā)過(guò)程。該框架使用了特定的方式來(lái)進(jìn)行配置,從而使開(kāi)發(fā)人員不再需要定義樣板化的配置。通過(guò)這種方式,Spring Boot致力于在蓬勃發(fā)展的快速應(yīng)用開(kāi)發(fā)領(lǐng)域(rapid application development)成為領(lǐng)導(dǎo)者。

原有Spring優(yōu)缺點(diǎn)分析

Spring的優(yōu)點(diǎn)分析

Spring是Java企業(yè)版(Java Enterprise Edition,JEE,也稱J2EE)的輕量級(jí)代替品。無(wú)需開(kāi)發(fā)重量級(jí)的Enterprise JavaBean(EJB),Spring為企業(yè)級(jí)Java開(kāi)發(fā)提供了一種相對(duì)簡(jiǎn)單的方法,通過(guò)依賴注入和面向切面編程,用簡(jiǎn)單的Java對(duì)象(Plain Old Java Object,POJO)實(shí)現(xiàn)了EJB的功能。

Spring的缺點(diǎn)分析

雖然Spring的組件代碼是輕量級(jí)的,但它的配置卻是重量級(jí)的。一開(kāi)始,Spring用XML配置,而且是很多XML配置。Spring 2.5引入了基于注解的組件掃描,這消除了大量針對(duì)應(yīng)用程序自身組件的顯式XML配置。Spring 3.0引入了基于Java的配置,這是一種類型安全的可重構(gòu)配置方式,可以代替XML。

所有這些配置都代表了開(kāi)發(fā)時(shí)的損耗。因?yàn)樵谒伎糞pring特性配置和解決業(yè)務(wù)問(wèn)題之間需要進(jìn)行思維切換,所以編寫配置擠占了編寫應(yīng)用程序邏輯的時(shí)間。和所有框架一樣,Spring實(shí)用,但與此同時(shí)它要求的回報(bào)也不少。

除此之外,項(xiàng)目的依賴管理也是一件耗時(shí)耗力的事情。在環(huán)境搭建時(shí),需要分析要導(dǎo)入哪些庫(kù)的坐標(biāo),而且還需要分析導(dǎo)入與之有依賴關(guān)系的其他庫(kù)的坐標(biāo),一旦選錯(cuò)了依賴的版本,隨之而來(lái)的不兼容問(wèn)題就會(huì)嚴(yán)重阻礙項(xiàng)目的開(kāi)發(fā)進(jìn)度。

MyBatis

@

簡(jiǎn)介

優(yōu)點(diǎn)

最大的優(yōu)點(diǎn)是SQL語(yǔ)句靈活,適合調(diào)優(yōu)情景,業(yè)務(wù)復(fù)雜情景

劣勢(shì)

最大的劣勢(shì)是不同數(shù)據(jù)庫(kù)之間的遷移

引入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中加入

#dateSource
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
# mybatis
# 下劃線轉(zhuǎn)駝峰開(kāi)啟
mybatis.configuration.map-underscore-to-camel-case=true
# mapper掃描位置
mybatis.mapper-locations=classpath:mapper/*.xml

需要說(shuō)明的是,我引入的mysql驅(qū)動(dòng)為 com.mysql.cj.jdbc.Driver,而不是 com.mysql.jdbc.Driver。以下是一些參數(shù)的說(shuō)明;

  • serverTimezone:該驅(qū)動(dòng)需要指定某時(shí)區(qū)。
  • useUnicode:開(kāi)啟指定編碼。
  • characterEncoding:指定讀取數(shù)據(jù)庫(kù)的編碼,因?yàn)轫?xiàng)目采用UTF-8,存取數(shù)據(jù)庫(kù)信息時(shí)保持一致。
  • useSSL:是否建立SSL連接,我顯示選的否,因?yàn)檫@要為服務(wù)器證書驗(yàn)證提供信任庫(kù),暫時(shí)沒(méi)條件。

代碼實(shí)戰(zhàn)

本地的 mysql 版本為 5.7.20。

建表語(yǔ)句

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 = '用戶基本信息表';

插入數(shù)據(jù)

INSERT INTO test.user_info (user_id, user_name) VALUES (1, '特朗普');
INSERT INTO test.user_info (user_id, user_name) VALUES (2, '唐納德');

現(xiàn)在的項(xiàng)目路徑為

在SpringBoot的入口類中加 @MapperScan 注解,以掃描 DAO 類,不用在每個(gè)dao接口加個(gè)@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);
 }
}

注:如果沒(méi)有分拆項(xiàng)目成微服務(wù)架構(gòu),或分布式架構(gòu),application主類中的@SpringBootApplication自動(dòng)會(huì)掃描本包中的@Controller,@Service,@Resource等,是不需要浪費(fèi)另一行@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架構(gòu)過(guò)來(lái)的,這個(gè)@Resource注解可能比較陌生,因?yàn)槲夜烙?jì)會(huì)和我之前一樣用@Autowired,但是我是沒(méi)有在dao層用 @Repository 注解的,之前用了在主類用了@MapperScan自動(dòng)去掃描所有的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 + '\'' +
    '}';
 }
}

如果你運(yùn)行不成功,請(qǐng)對(duì)比引入的包的版本,和數(shù)據(jù)庫(kù)配置是否是根據(jù)你本地的,順便看看注解是否和文中一樣。

效果圖如下;

注:如果是跟著本教程來(lái)的,因?yàn)橐婚_(kāi)始就引入了spring security,而新增的路徑不在剛才的權(quán)限中,所以我給zs用戶改成了user下的皆可訪問(wèn)。如果沒(méi)有跟著之前配置spring security,無(wú)需理會(huì)如下內(nèi)容

//http.authorizeRequests().antMatchers("/user/addUser").hasRole("AAA") 
http.authorizeRequests().antMatchers("/user/**").hasRole("AAA")

總結(jié)

以上所述是小編給大家介紹的springboot快速整合Mybatis組件的方法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

相關(guān)文章

  • Springboot 使用內(nèi)置tomcat禁止不安全HTTP的方法

    Springboot 使用內(nèi)置tomcat禁止不安全HTTP的方法

    這篇文章主要介紹了Springboot 使用內(nèi)置tomcat禁止不安全HTTP的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java concurrency集合之ConcurrentLinkedQueue_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java concurrency集合之ConcurrentLinkedQueue_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要介紹了Java concurrency集合之ConcurrentLinkedQueue,需要的朋友可以參考下
    2017-06-06
  • HashMap在JDK7與JDK8中的實(shí)現(xiàn)過(guò)程解析

    HashMap在JDK7與JDK8中的實(shí)現(xiàn)過(guò)程解析

    這幾天學(xué)習(xí)了HashMap的底層實(shí)現(xiàn),但是發(fā)現(xiàn)好幾個(gè)版本的,代碼不一,很多文章都是舊版本JDK1.6.JDK1.7的。現(xiàn)在我來(lái)分析下JDK7與JDK8中HashMap的實(shí)現(xiàn)過(guò)程
    2021-09-09
  • JAVA設(shè)計(jì)模式之組合模式原理與用法詳解

    JAVA設(shè)計(jì)模式之組合模式原理與用法詳解

    這篇文章主要介紹了JAVA設(shè)計(jì)模式之組合模式,簡(jiǎn)單說(shuō)明了組合模式的原理,并結(jié)合實(shí)例分析了java組合模式的具體用法,需要的朋友可以參考下
    2017-08-08
  • Java連接服務(wù)器的兩種方式SFTP和FTP

    Java連接服務(wù)器的兩種方式SFTP和FTP

    在項(xiàng)目開(kāi)發(fā)中,一般文件存儲(chǔ)很少再使用SFTP服務(wù),但是也不排除合作伙伴使用SFTP來(lái)存儲(chǔ)項(xiàng)目中的文件或者通過(guò)SFTP來(lái)實(shí)現(xiàn)文件數(shù)據(jù)的交互,這篇文章主要介紹了Java集成FTP與SFTP連接池
    2023-02-02
  • SpringSecurity中的Filter Chain(過(guò)濾器鏈)

    SpringSecurity中的Filter Chain(過(guò)濾器鏈)

    Spring Security的Filter Chain是由一系列過(guò)濾器組成的管道,每個(gè)過(guò)濾器執(zhí)行特定的安全功能,Spring Security能夠提供強(qiáng)大而靈活的安全控制機(jī)制,從而保護(hù)你的應(yīng)用程序不受各種網(wǎng)絡(luò)安全威脅的侵害,本文介紹SpringSecurity中的Filter Chain,感興趣的朋友跟隨小編一起看看吧
    2024-06-06
  • MyBatis源碼分析之日志logging詳解

    MyBatis源碼分析之日志logging詳解

    這篇文章主要給大家介紹了關(guān)于MyBatis源碼分析之日志logging的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • spring-cloud入門之eureka-client(服務(wù)注冊(cè))

    spring-cloud入門之eureka-client(服務(wù)注冊(cè))

    本篇文章主要介紹了spring-cloud入門之eureka-client(服務(wù)注冊(cè)),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • Java Vector和ArrayList的異同分析及實(shí)例講解

    Java Vector和ArrayList的異同分析及實(shí)例講解

    在本篇文章里小編給大家整理的是一篇關(guān)于Java Vector和ArrayList的異同分析及實(shí)例講解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)參考下。
    2021-01-01
  • Linux下Java Python啟動(dòng)管理腳本方便程序管理

    Linux下Java Python啟動(dòng)管理腳本方便程序管理

    這篇文章主要為大家介紹了Linux下Java/Python啟動(dòng)管理腳本方便程序管理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11

最新評(píng)論