SpringBoot + Mybatis进行项目整合并实现增删改查功能

之前做了个SpringBoot + Mybatis创建一个新的项目,想着记录下来容易后面进行自我巩固和一起学习

1.总体设计大纲:

  • 新建springboot项目和坐标的引入
  • Module的建立
  • 分层模式的设计
  • 启动项目与测试验证

以下是该工程的总体架构在这里插入图片描述
数据库里面之前存有的数据:
在这里插入图片描述

2.首先新建一个springboot项目,因为我是用的是idea,在这里我通过截图的方式说明,这样也好理解:

注意SDK的设置

在这里可以设置坐标、语言、打包方式、版本。之后点击Next


在这里插入图片描述

上面两张图片是我选择在pom.xml中所要添加的jar包,点击Next

在这里插入图片描述

点击Finish就可以正常创建一个springboot工程了。。。YES

3.想着后面想学习分布式,所以我新建了一个模块,注意idea和eclipse不一样,eclipse是在一个workspace中新建多个project,而idea则是一个project下面包含多个Module

方式和新建springboot流程一样,新建完之后差不多样式如下:

在这里插入图片描述

4.这是在pom.xml下已有了相应项目开发的坐标,可以正常完成接下来的项目开发了

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.1</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
            <version>5.1.6</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

5.首先设置application.properties,指定了jdbc和mybatis配置文件,当然用yml也可以

#端口号
server.port=8080

#JDBC
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.password=root
spring.datasource.username=root
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/customer?serverTimezone=GMT&useUnicode=true&characterEncoding=utf8

#mybati配置文件
mybatis.mapper-locations=classpath:mapper/*Mapper.xml

#日志
logging.level.root=debug

提醒:日至等级默认是info,我把它设置为debug(等级由高到低为:ERROR、WARN、INFO、DEBUG)

5.因为设置了mybatis的配置文件,所以在resources下新建一个 mapper文件夹,这里用来写mapper层对应的sql语句

在这里插入图片描述

6.其次就可以在java文件夹中建立三层包了,大伙看:

在这里插入图片描述

注意:bean层是写与数据库对应的实体类,mapper层就是dao数据访问层,主要负责写的是与数据库交互的一些方法,接口就行,不用写实现方法,实现方式后面在mapper层中新建*Mapper.xml进行sql的编写。service层即为业务逻辑层,里面主要是对业务的处理。controller层即为控制层,接受请求并响应请求。

7.哇,接下来终于可以写代码了,太好了。

先在bean下新建一个实体类Customer,与数据库中的customer表相对应

package com.example.user.bean;

public class Customer {
    private  String  id;
    private String name;
    private String gender;
    private String phone;
    private String email;
    private String description;
    
    public Customer() {
    }
   ................................(省略get和set方法)

下一步,在mapper层中新建一个接口UserMapper:

package com.example.user.mapper;

import com.example.user.bean.Customer;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

//@Mapper   //交给spring管理,不用写Mapper映射文件。@Mapper不需要配置扫描地址,通过xml里面的namespace里面的接口地址,生成了Bean后注入到Service层中。@Repository需要在Spring中配置扫描地址,然后生成Dao层的Bean才能被注入到Service层中:如下,在启动类中配置扫描地址:
public interface UserMpper {
    List<Customer> getCustomer();   //查找全部

    void insertCustomer(Customer customer);    //插入

    Customer getById(String string);     //通过id查找某一条

    void deleteCustomer(String string);    //删除

    void updateCustomer(Customer customer);   //更新
}

接下来注意在mapper层下新建UserMapper.xml文件:

<?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.user.mapper.UserMpper">
    <select id="getCustomer" resultType="com.example.user.bean.Customer">
        select * from customer
    </select>
    
    <insert id="insertCustomer" parameterType="com.example.user.bean.Customer">
        insert into customer values ("4","杨家将","nan","17687956309","杨家将@163.com","我是杨家将")
    </insert>

    <select id="getById" resultType="com.example.user.bean.Customer">

        select  * from customer where id=#{string}

    </select>
    <delete id="deleteCustomer">

        delete from customer where id=#{string}
    </delete>

    <update id="updateCustomer" parameterType="com.example.user.bean.Customer">
        update customer set name = #{name},gender = #{gender} where id= #{id}
    </update>
</mapper>

好了,接下来就开始service层的代码UserService:

package com.example.user.service;

import com.example.user.bean.Customer;

import java.util.List;

public interface UserService {

    List<Customer> getCustomer();

    void insertCustomer(Customer customer);

    Customer getById(String string);

    void deleteCustomer(String string);

    boolean updateCustomer(Customer customer);

}

可以在Service业务逻辑层里建立一个impl包,新建一个实现类:

package com.example.user.service.impl;

import com.example.user.bean.Customer;
import com.example.user.mapper.UserMpper;
import com.example.user.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserServiceImpl implements UserService {
    @Autowired
    UserMpper userMpper;

    @Override
    public List<Customer> getCustomer() {
     List<Customer> list = userMpper.getCustomer();
     return list;
    }

    @Override
    public void insertCustomer(Customer customer) {
        userMpper.insertCustomer(customer);
    }

    @Override
    public Customer getById(String string) {
        Customer cu = userMpper.getById(string);
        return cu;
    }

    @Override
    public void deleteCustomer(String string) {
        string = "4";
        userMpper.deleteCustomer(string);
    }

    @Override
    public boolean updateCustomer(Customer customer) {
        boolean flag = false;
        try{
            userMpper.updateCustomer(customer);
            flag = true;
        }catch (Exception e){
            e.printStackTrace();
        }

        return flag;
    }

}

最后一个就是Controller层里新建UserController类:

package com.example.user.controller;

import com.example.user.bean.Customer;
import com.example.user.service.UserService;
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 java.util.List;

@Controller
public class UserController {

    @Autowired
    UserService userService;

    @RequestMapping(value="index")
    @ResponseBody
    public List<Customer> getCustomer(){
        List<Customer> list = userService.getCustomer();
        return list;
    }

    @RequestMapping(value = "insert")
    @ResponseBody
    public String insertCustomer(Customer customer) {
        userService.insertCustomer(customer);
        return "插入成功";
    }

    @RequestMapping(value = "getById")
    @ResponseBody
    public Customer getById(String string) {
        string="1";
        Customer cu = userService.getById(string);
        System.out.println("成功");
        return cu;
    }

    @RequestMapping(value = "delete")
    @ResponseBody
    public String deleteCustomer(String string) {
        userService.deleteCustomer(string);
        return "删除成功";
    }

    @RequestMapping(value="update")
    @ResponseBody
    public boolean updateCustomer(Customer customer) {
        customer.setId("4");
        customer.setName("盖伦");
        customer.setGender("nanhaizi");
       return userService.updateCustomer(customer);
    }
}

到这里,代码基本就写好了,接下来就开始测试吧,到了紧张的时候了,在主程序里执行:

package com.example.user;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import tk.mybatis.spring.annotation.MapperScan;

@SpringBootApplication
@MapperScan("com.example.user.mapper")
public class GmailUserApplication {

    public static void main(String[] args) {
        SpringApplication.run(GmailUserApplication.class, args);
    }

}

注意:@Controller 、 @Service。@Mapper的使用,@Mapper也可以更换为在启动类中加入@MapperScan(“xx”)注解

好了,这样就可以开启项目了:
在这里插入图片描述

咱们就可以直接访问了,因为springboot里面内嵌了tomcat容器,所以咱们就不用在配置tomcat了,这是真的方便。输入网址就直接访问啦,哈哈 !!不吹牛,比ssm真的少了太多的配置文件。开箱即用,真方便!!!

8.代码都写好了,那就到了最后一个环节测试了。使用浏览器或者postman都可以,只要url像我这样输入正确,一定是可以的。。嘻嘻

  • 这是查询数据库中所有的数据通过json的方式展示到页面
    这是查询数据库中所有的数据通过json的方式展示到页面

  • 这是查询单个数据的url和显示的结果
    这是查询单个数据的url和显示的结果

  • 这是插入的url和显示的结果
    这是插入的url和显示的结果

注意,插入之后在数据库中能看到明细(当然通过localhost:8080/index也可以查询)

  • 这是更新的url和显示的结果
    这是更新的url和显示的结果

修改的数据在数据库中查看,如下图:
在这里插入图片描述

  • 这是删除的url和显示的结果
    这是删除的url和显示的结果

删除的数据在数据库中查看,如下图:在这里插入图片描述

好了,到这里就大功告成,这样就简单的搭建了一个小Demo并实现了crud,各位小伙伴们如果过程中有什么疑惑问题,可以发出来大家一起讨论哈。。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值