iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Java(一):创建 Spring Boot 项目并实现连接操作MySQL数据库
  • 500
分享到

Java(一):创建 Spring Boot 项目并实现连接操作MySQL数据库

java数据库springbootmysql 2023-09-17 10:09:13 500人浏览 八月长安
摘要

创建 Spring Boot 项目并实现连接操作Mysql数据库 准备MySQLMaven`idea`所需插件下载 `idea`创建项目配置 `Server URL`填写项目相关信息创建

创建 Spring Boot 项目并实现连接操作Mysql数据库

准备

mysql

在这里插入图片描述

命令

$ Docker pull mysql$ docker run --name local-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWord=123456 -d mysql

Maven

相关地址

下载地址:

https://maven.apache.org/

maven配置方法地址:

https://developer.aliyun.com/mvn/guide

仓库搜索地址:

https://mvnrepository.com/

https://repo.maven.apache.org/

maven本地配置conf/settings.xml

<localRepository>${user.home}/Documents/AAA-PLee/maven/repositorylocalRepository>                <mirror><id>aliyunmavenid><mirrorOf>*mirrorOf><name>阿里云公共仓库name><url>https://maven.aliyun.com/repository/publicurl>mirror>        

下载idea并配置本地环境maven

在这里插入图片描述

Maven构建生命周期

  • Maven的构建生命周期包括三个阶段cleanbuildsite
    1. clean:清理项目,删除之前的编译结果和构建产生的文件。
    2. build:构建项目,包括编译、测试、打包等操作。
    3. site:生成项目文档和报告,例如测试报告、代码覆盖率报告等。
  • 每个阶段都包含了一些插件和目标,Maven会按照预定义的顺序依次执行。例如,在build阶段,Maven会依次执行以下目标:
    1. validate:验证项目是否正确。
    2. compile:编译项目源代码。
    3. test:运行项目的测试用例。
    4. package:将项目打包成jar或war文件。
    5. verify:验证打包结果是否正确。
    6. install:将打包结果安装到本地Maven仓库。
    7. deploy:将打包结果部署到远程Maven仓库。

idea所需插件下载

在这里插入图片描述

EasyCode

用于快速生成与数据库相关的项目目录和代码

MyBatisPlus

用于javasql.xml之间的跳转

idea创建项目

配置 Server URL

地址:Https://start.aliyun.com/

在这里插入图片描述

填写项目相关信息

在这里插入图片描述

在这里插入图片描述

创建项目成功(运行并测试)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

idea测试能否正常连接MySQL

在这里插入图片描述

创建数据库表

在这里插入图片描述

添加项目内连接MySQL的配置

搜索连接MySQL使用的依赖包

在这里插入图片描述

编写连接数据库配置文件

pom.xml中引入MySQL依赖包(别忘了Load Maven Changes

<dependency>    <groupId>com.mysqlgroupId>    <artifactId>mysql-connector-jartifactId>dependency>

创建并编写application.yml

路径:user/src/main/resources/application.yml

server:  port: 8000spring:  application:    name: user-service  datasource:    url: jdbc:mysql://127.0.0.1:3306/java_app    username: root    password: 123456    driver-class-name: com.mysql.cj.jdbc.Driver

利用插件EasyCode快速创建操作数据库相关代码

在这里插入图片描述

在这里插入图片描述

查看创建完成后的项目目录结构

在这里插入图片描述

Java应用程序通常使用以下几个组件来组织代码

这些组件之间的关系通常是 Controller 调用 ServiceService 定义impl文件夹内的业务实现类业务实现类调用 DAODAO 操作 Mapper中的SQL语句Entity 表示数据库表结构实体类

简单来说,Controller 用于接收用户请求,Service 实现业务逻辑,DAO 操作数据库,Entity 表示数据库表结构

/service/impl/xxx.java 中实现具体业务逻辑

/resources/mapper/xxx.xml 中添加操作数据的sql语句

  • Controller:控制器,用于接收用户请求并调用相应的处理方法来处理请求,然后返回响应结果。通常使用 Spring mvc 框架来实现。
  • Service:服务层,用于实现业务逻辑,调用 DAO 进行数据操作。通常包含接口和实现类。
  • DAO:数据访问对象,用于操作数据库。通常使用 mybatisHibernate 等框架来实现。
  • Entity:实体类,用于表示数据库中的表结构。通常包含类属性和对应的 getter/setter 方法。

解决项目中导入库报错问题

利用 https://mvnrepository.com/ 搜索解决

<dependencies>    <dependency>        <groupId>org.springframework.bootgroupId>        <artifactId>spring-boot-starter-WEBartifactId>    dependency>    <dependency>        <groupId>com.mysqlgroupId>        <artifactId>mysql-connector-jartifactId>    dependency>    <dependency>        <groupId>org.springframework.datagroupId>        <artifactId>spring-data-commonsartifactId>        <version>3.1.0version>    dependency>    <dependency>        <groupId>org.mybatisgroupId>        <artifactId>mybatisartifactId>        <version>3.5.6version>    dependency>    <dependency>        <groupId>org.springframework.bootgroupId>        <artifactId>spring-boot-starter-testartifactId>        <scope>testscope>    dependency>dependencies>

尝试运行(报错:没有引入对应版本)

在这里插入图片描述

<dependency>    <groupId>org.springframework.datagroupId>    <artifactId>spring-data-commonsartifactId>dependency>

尝试运行(缺少 @MapperScan 注解)

在这里插入图片描述

注意:尽量选择使用量大的依赖包

<dependency>    <groupId>org.mybatis.spring.bootgroupId>    <artifactId>mybatis-spring-boot-starterartifactId>    <version>2.2.2version>dependency>
// user/src/main/java/com/example/user/UserApplication.javapackage com.example.user;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.mybatis.spring.annotation.MapperScan;@SpringBootApplication@MapperScan(basePackages = "com.example.user.dao")public class UserApplication {    public static void main(String[] args) {        SpringApplication.run(UserApplication.class, args);    }}
  • @SpringBootApplication注解是一个组合注解,它的作用是标记一个Spring
    Boot应用程序的主类。它包括三个注解:@Configuration@EnableAutoConfiguration@ComponentScan
    • @Configuration:将该类标记为Spring应用程序上下文中的一个bean定义的源。即在该类中定义的bean可以被Spring容器管理。
    • @EnableAutoConfiguration:自动配置Spring Boot应用程序所需的Bean。
    • @ComponentScan:扫描应用程序中的其他组件,例如控制器、服务和存储库。
  • @MapperScan是MyBatis框架中的一个注解,它的作用是扫描指定的包路径,找到所有标记了@Mapper注解的接口,并将这些接口创建成MyBatis的Mapper接口实现类
    • 可以在需要使用Mapper的地方自动注入这些Mapper实现类的实例,从而方便地访问数据库。

尝试运行(运行成功,若运行后立即结束,有可能为未引入spring-boot-starter-web包)

尝试引入即可

<dependency>    <groupId>org.springframework.bootgroupId>    <artifactId>spring-boot-starter-webartifactId>dependency>

最终pom.xml

<dependencies>    <dependency>        <groupId>org.springframework.bootgroupId>        <artifactId>spring-boot-starter-webartifactId>    dependency>    <dependency>        <groupId>com.mysqlgroupId>        <artifactId>mysql-connector-jartifactId>    dependency>    <dependency>        <groupId>org.springframework.datagroupId>        <artifactId>spring-data-commonsartifactId>    dependency>    <dependency>        <groupId>org.mybatisgroupId>        <artifactId>mybatisartifactId>        <version>3.5.6version>    dependency>    <dependency>        <groupId>org.mybatis.spring.bootgroupId>        <artifactId>mybatis-spring-boot-starterartifactId>        <version>2.2.2version>    dependency>    <dependency>        <groupId>org.springframework.bootgroupId>        <artifactId>spring-boot-starter-testartifactId>        <scope>testscope>    dependency>dependencies>

访问接口

请求失败

在这里插入图片描述

在这里插入图片描述

解决报错(告诉MyBatis去哪里找SQL语句)

mybatis:  mapper-locations: classpath:**/mappermapper@RestController@RequestMapping("user")public class UserController {        @Resource    private UserService userService;        @GetMapping    public ResponseEntity<Page<User>> queryByPage(User user, PageRequest pageRequest) {        return ResponseEntity.ok(this.userService.queryByPage(user, pageRequest));    }        @GetMapping("{id}")    public ResponseEntity<User> queryById(@PathVariable("id") String id) {        return ResponseEntity.ok(this.userService.queryById(id));    }        @PostMapping    public ResponseEntity<User> add(User user) {        return ResponseEntity.ok(this.userService.insert(user));    }        @PutMapping    public ResponseEntity<User> edit(User user) {        return ResponseEntity.ok(this.userService.update(user));    }        @DeleteMapping    public ResponseEntity<Boolean> deleteById(String id) {        return ResponseEntity.ok(this.userService.deleteById(id));    }}

(User)表服务接口:user/src/main/java/com/example/user/service/UserService.java

package com.example.user.service;import com.example.user.entity.User;import org.springframework.data.domain.Page;import org.springframework.data.domain.PageRequest;public interface UserService {        User queryById(String id);        Page<User> queryByPage(User user, PageRequest pageRequest);        User insert(User user);        User update(User user);        boolean deleteById(String id);}

(User)表服务实现类:user/src/main/java/com/example/user/service/impl/UserServiceImpl.java

package com.example.user.service.impl;import com.example.user.entity.User;import com.example.user.dao.UserDao;import com.example.user.service.UserService;import org.springframework.stereotype.Service;import org.springframework.data.domain.Page;import org.springframework.data.domain.PageImpl;import org.springframework.data.domain.PageRequest;import javax.annotation.Resource;@Service("userService")public class UserServiceImpl implements UserService {    @Resource    private UserDao userDao;        @Override    public User queryById(String id) {        return this.userDao.queryById(id);    }        @Override    public Page<User> queryByPage(User user, PageRequest pageRequest) {        long total = this.userDao.count(user);        return new PageImpl<>(this.userDao.queryAllByLimit(user, pageRequest), pageRequest, total);    }        @Override    public User insert(User user) {        this.userDao.insert(user);        return user;    }        @Override    public User update(User user) {        this.userDao.update(user);        return this.queryById(user.getId());    }        @Override    public boolean deleteById(String id) {        return this.userDao.deleteById(id) > 0;    }}

(User)表数据库访问层:user/src/main/java/com/example/user/dao/UserDao.java

package com.example.user.dao;import com.example.user.entity.User;import org.apache.ibatis.annotations.Param;import org.springframework.data.domain.Pageable;import java.util.List;public interface UserDao {        User queryById(String id);        List<User> queryAllByLimit(User user, @Param("pageable") Pageable pageable);        long count(User user);        int insert(User user);        int insertBatch(@Param("entities") List<User> entities);        int insertOrUpdateBatch(@Param("entities") List<User> entities);        int update(User user);        int deleteById(String id);}

(User)实体类:user/src/main/java/com/example/user/entity/User.java

package com.example.user.entity;import java.io.Serializable;public class User implements Serializable {    private static final long serialVersionUID = 264722085318530649L;    private String id;    private String name;    private Integer age;    private String sex;    private String phone;    public String getId() {        return id;    }    public void setId(String id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public Integer getAge() {        return age;    }    public void setAge(Integer age) {        this.age = age;    }    public String getSex() {        return sex;    }    public void setSex(String sex) {        this.sex = sex;    }    public String getPhone() {        return phone;    }    public void setPhone(String phone) {        this.phone = phone;    }}

SQL:user/src/main/resources/mapper/UserDao.xml

DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.example.user.dao.UserDao">    <resultMap type="com.example.user.entity.User" id="UserMap">        <result property="id" column="id" jdbcType="VARCHAR"/>        <result property="name" column="name" jdbcType="VARCHAR"/>        <result property="age" column="age" jdbcType="INTEGER"/>        <result property="sex" column="sex" jdbcType="VARCHAR"/>        <result property="phone" column="phone" jdbcType="VARCHAR"/>    resultMap>        <select id="queryById" resultMap="UserMap">        select        id, name, age, sex, phone        from user        where id = #{id}    select>        <select id="queryAllByLimit" resultMap="UserMap">        select        id, name, age, sex, phone        from user        <where>            <if test="id != null and id != ''">                and id = #{id}            if>            <if test="name != null and name != ''">                and name = #{name}            if>            <if test="age != null">                and age = #{age}            if>            <if test="sex != null and sex != ''">                and sex = #{sex}            if>            <if test="phone != null and phone != ''">                and phone = #{phone}            if>        where>        limit #{pageable.offset}, #{pageable.pageSize}    select>        <select id="count" resultType="java.lang.Long">        select count(1)        from user        <where>            <if test="id != null and id != ''">                and id = #{id}            if>            <if test="name != null and name != ''">                and name = #{name}            if>            <if test="age != null">                and age = #{age}            if>            <if test="sex != null and sex != ''">                and sex = #{sex}            if>            <if test="phone != null and phone != ''">                and phone = #{phone}            if>        where>    select>        <insert id="insert" keyProperty="id" useGeneratedKeys="true">        insert into user(name, age, sex, phone)        values (#{name}, #{age}, #{sex}, #{phone})    insert>    <insert id="insertBatch" keyProperty="id" useGeneratedKeys="true">        insert into user(name, age, sex, phone)        values        <foreach collection="entities" item="entity" separator=",">            (#{entity.name}, #{entity.age}, #{entity.sex}, #{entity.phone})        foreach>    insert>    <insert id="insertOrUpdateBatch" keyProperty="id" useGeneratedKeys="true">        insert into user(name, age, sex, phone)        values        <foreach collection="entities" item="entity" separator=",">            (#{entity.name}, #{entity.age}, #{entity.sex}, #{entity.phone})        foreach>        on duplicate key update        name = values(name),        age = values(age),        sex = values(sex),        phone = values(phone)    insert>        <update id="update">        update user        <set>            <if test="name != null and name != ''">                name = #{name},            if>            <if test="age != null">                age = #{age},            if>            <if test="sex != null and sex != ''">                sex = #{sex},            if>            <if test="phone != null and phone != ''">                phone = #{phone},            if>        set>        where id = #{id}    update>        <delete id="deleteById">        delete from user where id = #{id}    delete>mapper>

来源地址:https://blog.csdn.net/weixin_43526371/article/details/131172144

您可能感兴趣的文档:

--结束END--

本文标题: Java(一):创建 Spring Boot 项目并实现连接操作MySQL数据库

本文链接: https://www.lsjlt.com/news/410943.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • oracle怎么显示表的字段
    如何显示 oracle 表的字段 在 Oracle 数据库中,可以使用 DESC 命令显示表的字段。 语法: DESC table_name 参数: table_name:要显示字段的表...
    99+
    2024-05-14
    oracle
  • oracle怎么看所有的表
    在 oracle 数据库中查看所有表的步骤:连接到数据库运行查询:select table_name from user_tables; 如何使用 Oracle 查看所有表 ...
    99+
    2024-05-14
    oracle
  • oracle怎么显示行数
    如何使用 oracle 显示行数 在 Oracle 数据库中,有两种主要方法可以显示行数: 1. 使用 COUNT 函数 SELECT COUNT(*) FROM table_n...
    99+
    2024-05-14
    oracle
  • oracle怎么显示百分比
    oracle中显示百分比的方法有:使用百分号“%”;使用to_char()函数;使用format()函数(oracle 18c及更高版本);创建自定义函数。 Oracle 显...
    99+
    2024-05-14
    oracle
  • oracle怎么删除列
    oracle 中删除列的方法有两种:1)使用 alter table table_name drop column column_name 语句;2)使用 drop colum...
    99+
    2024-05-14
    oracle
  • sql怎么查看表的索引
    通过查询系统表,可以获取表的索引信息,包括索引名称、是否唯一、索引类型、索引列和行数。常用系统表有:mysql 的 information_schema.statistics、postg...
    99+
    2024-05-14
    mysql oracle
  • sql怎么查看索引
    您可以使用 sql 通过以下方法查看索引:show indexes 语句:显示表中定义的索引列表及其信息。explain 语句:显示查询计划,其中包含用于执行查询的索引。informat...
    99+
    2024-05-14
  • sql怎么查看存储过程
    如何查看 sql 存储过程的源代码:使用 show create procedure 语句直接获取创建脚本。查询 information_schema.routines 表的 routi...
    99+
    2024-05-14
  • sql怎么查看视图表
    要查看视图表,可以使用以下步骤:使用 select 语句获取视图中的数据。使用 desc 语句查看视图的架构。使用 explain 语句分析视图的执行计划。使用 dbms 提供...
    99+
    2024-05-14
    oracle python
  • sql怎么查看创建的视图
    可以通过sql查询查看已创建的视图,具体步骤包括:连接到数据库并执行查询select * from information_schema.views;查询结果将显示视图的名称、...
    99+
    2024-05-14
    mysql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作