SpringBoot框架:使用mybatis連接mysql數(shù)據(jù)庫完成數(shù)據(jù)訪問

需要技術(shù)

java揩懒,MySql基本使用,mybatis技術(shù)的了解挽封,maven基本安裝使用已球,SpringBoot使用,git的使用辅愿,idea使用基礎(chǔ)智亮,mvc結(jié)構(gòu)。

Java基礎(chǔ)

具備Java基本使用+接口使用+面向?qū)ο笏枷?注解

MySql使用

安裝數(shù)據(jù)庫+進(jìn)入MySql+基本SQL語句

mybatis

基本的配置和理解

maven

安裝maven+配置maven+基礎(chǔ)命令

SpringBoot

了解作用+基本的創(chuàng)建+基本的配置

git

了解git+創(chuàng)建項(xiàng)目+基本命令

idea

安裝+配置+鏈接git点待,配置maven阔蛉,創(chuàng)建SpringBoot項(xiàng)目

mvc

基本結(jié)構(gòu)+思路清晰

代碼實(shí)現(xiàn)


創(chuàng)建項(xiàng)目
  • idea旗艦版和社區(qū)版的區(qū)別

旗艦版的是Springboot,社區(qū)版的是spring Assistant

參考鏈接:https://blog.csdn.net/crazilyer/article/details/80313323

  • 導(dǎo)入依賴包
    1.勾選SQL中的JDBC API癞埠、MyBatis Framework状原、MySQL Driver聋呢,創(chuàng)建項(xiàng)目后就會(huì)自動(dòng)配置和引入這些包。
    2.在pom.xml文件中添加依賴
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <!-- mybatis -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.3</version>
        </dependency>
        <!-- mysql -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!-- web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.5.5</version>
        </dependency>

注:如果maven包加載過程中取消了遭笋,可能會(huì)導(dǎo)致報(bào)錯(cuò)坝冕,執(zhí)行mvn package重新加載

添加MybatisConfig類在新建config包下

package com.example.demo.config;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

import javax.sql.DataSource;

@Configuration
@MapperScan(basePackages = "com.example.demo.mapper",
      sqlSessionFactoryRef = "sqlSessionFactory")
public class MybatisConfig {

  static final String MAPPER_LOCATION = "classpath:mybatis/*.xml";

  @Value("${spring.datasource.url}")
  private String url;

  @Value("${spring.datasource.username}")
  private String user;

  @Value("${spring.datasource.password}")
  private String password;

  @Value("${spring.datasource.driver-class-name}")
  private String driverClass;

  @Bean(name = "sqlSessionFactory")
  public SqlSessionFactory sqlSessionFactory(@Qualifier("dataSource") DataSource dataSource)
          throws Exception {
      final SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
      sqlSessionFactoryBean.setDataSource(dataSource);
      sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver()
              .getResources(MAPPER_LOCATION));
      return sqlSessionFactoryBean.getObject();
  }

  @Bean(name = "dataSource")
  public DataSource dataSource() {
      DataSourceBuilder dataSource = DataSourceBuilder.create();
      dataSource.driverClassName(driverClass);
      dataSource.url(url);
      dataSource.username(user);
      dataSource.password(password);
      return dataSource.build();
  }


}

創(chuàng)建數(shù)據(jù)庫

數(shù)據(jù)庫名:spring_boot_demo

數(shù)據(jù)庫表:t_user

字段:id徒探,username瓦呼,password,age测暗,sex

配置數(shù)據(jù)庫連接信息

springboot中默認(rèn)的配置文件是application.properties央串,修改后綴名為application.yml,打開編輯配置信息

1.配置端口路徑

server:
  port: 8080
  servlet:
    context-path: /cn

2.配置數(shù)據(jù)庫連接信息

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/spring_boot_demo?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true&serverTimezone=Asia/Shanghai
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver

建立mvc架構(gòu)實(shí)現(xiàn)

數(shù)據(jù)訪問層
業(yè)務(wù)邏輯層
頁面展示層


屏幕快照 2022-02-17 21.32.12.png

數(shù)據(jù)訪問層

User類implements了一個(gè)Serializable類碗啄,該類的作用是序列化质和。

package com.example.demo.po;

import java.io.Serializable;

public class UserPO implements Serializable {
    /** 用戶ID */
    private int id;
    /** 用戶名 */
    private String username;
    /** 用戶密碼 */
    private String password;
    /** 年齡 */
    private int age;
    /** 性別 */
    private String sex;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
}

@Repository注解是把這個(gè)接口的一個(gè)實(shí)現(xiàn)類交給spring管理
UserMapper接口:

package com.example.demo.mapper;

import org.springframework.stereotype.Repository;


@Repository
public interface UserMapper {
    Integer getAgeByUsername(String username);
}

UserMapper.xml配置文件:
mapper的namespace指定了該xml文件指向的Mapper接口,里面的sql語句接受傳來的username數(shù)據(jù)進(jìn)行數(shù)據(jù)訪問稚字。

語句的id="getAgeByUsername"則是對(duì)應(yīng)mapper接口中的方法饲宿,resultType="java.lang.Integer"指定本次數(shù)據(jù)訪問的數(shù)據(jù)返回類型。

<?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.example.demo.mapper.UserMapper">
    <select id="getAgeByUsername" resultType="java.lang.Integer">
        select
        age
        from
        t_user
        where
        username=#{username,jdbcType=VARCHAR}
    </select>
</mapper>

在application.yml中添加配置mapper.xml文件的路徑:

mybatis:
  mapper-locations:
    - classpath:mybatis/*.xml

在程序入口類中添加掃描:

@MapperScan("com.example.demo.mapper")//添加該注解后胆描,運(yùn)行程序時(shí)會(huì)自動(dòng)掃描指定路徑中的mapper接口實(shí)現(xiàn)類瘫想。

業(yè)務(wù)邏輯層

UserService類:

package com.example.demo.service;

public interface UserService {
    int getAgeByUsername(String username);
}

UserServiceImpl類:

package com.example.demo.service.impl;

import com.example.demo.mapper.UserMapper;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    UserMapper userMapper;

    @Override
    public int getAgeByUsername(String username) {
        return userMapper.getAgeByUsername(username);
    }
}

注:在service接口的實(shí)現(xiàn)類中,要加上@Service注解昌讲,把實(shí)現(xiàn)類交給spring處理国夜。
通過@Autowired注解獲得自動(dòng)注入的userMapper實(shí)現(xiàn)類,在重寫的方法中進(jìn)行調(diào)用短绸,獲得數(shù)據(jù)车吹。

頁面展示層:

UserController類:

package com.example.demo.controller;

import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/cn")
public class UserController {

    @Autowired
    UserService userService;

    @RequestMapping(value = "/user/age",  method = RequestMethod.GET )
    public Integer getAgeOfUser(){
        return userService.getAgeByUsername("張文贊");
    }
}

運(yùn)行程序

按照配置的端口和映射URL,頁面的路徑應(yīng)該是http://localhost:8080/cn/cn/user/age

使用git上傳代碼

1.搜索github
2.添加你的git地址
3.連接
4.git add . 上傳
5.git staus 查看
6.git commit -m "修改備注"
7.git remote add origin https://github.com/ZhangWenZna/demo.git 創(chuàng)建連接
8.git remote -v 已經(jīng)有可以查看
9.git push -u origin master
輸入賬戶和密碼

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末醋闭,一起剝皮案震驚了整個(gè)濱河市窄驹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌证逻,老刑警劉巖乐埠,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異瑟曲,居然都是意外死亡饮戳,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門洞拨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扯罐,“玉大人,你說我怎么就攤上這事烦衣〈鹾樱” “怎么了掩浙?”我有些...
    開封第一講書人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)秸歧。 經(jīng)常有香客問我厨姚,道長(zhǎng),這世上最難降的妖魔是什么键菱? 我笑而不...
    開封第一講書人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任谬墙,我火速辦了婚禮,結(jié)果婚禮上经备,老公的妹妹穿的比我還像新娘拭抬。我一直安慰自己,他們只是感情好侵蒙,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開白布造虎。 她就那樣靜靜地躺著,像睡著了一般纷闺。 火紅的嫁衣襯著肌膚如雪算凿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,718評(píng)論 1 305
  • 那天犁功,我揣著相機(jī)與錄音氓轰,去河邊找鬼。 笑死波桩,一個(gè)胖子當(dāng)著我的面吹牛戒努,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播镐躲,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼储玫,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了萤皂?” 一聲冷哼從身側(cè)響起撒穷,我...
    開封第一講書人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎裆熙,沒想到半個(gè)月后端礼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡入录,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年蛤奥,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片僚稿。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡凡桥,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蚀同,到底是詐尸還是另有隱情缅刽,我是刑警寧澤啊掏,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站衰猛,受9級(jí)特大地震影響迟蜜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜啡省,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一娜睛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧冕杠,春花似錦微姊、人聲如沸酸茴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽薪捍。三九已至笼痹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間酪穿,已是汗流浹背凳干。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留被济,地道東北人救赐。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像只磷,于是被迫代替她去往敵國(guó)和親经磅。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容