记录一下springboot+mybatis实现增删改查的基本流程和心得

记录一下springboot+mybatis实现增删改查的基本流程和心得

springboot是一个spring家族中举足轻重的那一个,也是在javaweb实际开发过程经常使用到的一个框架,熟练使用springboot是在实际工作中非常重要的。(在一开始中我认为要先学会如何使用,而不是深究底层原理和代码,毕竟一般的java开发工作中项目经理只会不停给你分配增删改查的功能任务,当然,随着开发经验的不断提升,只止步于增删改查会很难得到工作地位提升的机会)

第一步:导入pom.xml依赖

<--springboot依赖引入-->
 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.1.RELEASE</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
</dependencies>

引入此依赖后等待加载完毕,创建一个处于包下第一层的入口类,命名规则是xxApplication吗,然后在类中添加入口方法

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

@SpringBootApplication是用来表示这是一个springboot项目的启动项类,目的是开启自动配置
然后可以写一个测试类测试一下是否配置成功
首先创建一个类,类名上加@RequestMapping("/users"),-----表示路径名为/users
在加@RestController , ----@RestController注解相当于@ResponseBody + @Controller两个注解,@ResponseBody是返回json信息, @Controlle是对应的视图解析器可以解析return 的jsp,html页面,并且跳转到相应页面,只是科普,实际工作都是加@RestController。
注解加完,创建一个返回String类型的方法

@GetMapping(value = "/")
    public String go(){
     return "Hello,world";
}

@GetMapping不用理解那么多,知道用来处理get请求的方法,开发中get请求的方法大多数都是各种selec,value是设置请求路径,这个随意设置,实际开发中和前端的开发人员说一声,填写的路径要保持一致。
运行application程序
页面输入 http://localhost:8080/users/
在这里插入图片描述
出现这个页面就证明springboot依赖注入成功,可以开始springboot应用开发啦!

第二步:导入mybatis依赖

  <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.2</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.1</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.1</version>
        </dependency>

mybatis是一款优秀的持久层框架,对JDBC进行了封装,可以方便快捷的操作JDBC事务,其实就是写个增删改查SQL就可以对数据库进行相应操作了

第三步 配置数据库

1.创建数据库这个不用我多说了吧,创建对应的表一个USER就可以,简单的给两个属性,username和password
2.在项目中的resources文件下找到application.yml(如果没有就自己创建一个),长这么一个样子

在这里插入图片描述
在里面填写如下信息:

spring:
  application:
    name: demo
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT
    username: 数据库账号
    password: 数据库密码
server:
  port: 8080
  tomcat:
    uri-encoding: utf-8

一般来说,配置好之后可以写一个JDBC测试类来测试一下配置的信息是否可以使用,如果需要的话以后我会写一个测试类放上来的。

第四步 增删改查

一般springboot项目都分为model类,Dao(mapper)类,controller类,service类,之所以这样分是有原因的,但我懒得说了,只需要记住按照这个创建对应的四个包,然后分别创建类,如下:
在这里插入图片描述

1.在model类中写对应数据库表里的属性,分别生成getset方法,顺便在写一个有参构造器和无参构造器在这里插入图片描述
2.在dao(mapper)类中写一个登录方法也就是查询

  //登录
    @Mapper
 public interface UserMapper {
  //登录
  public User login(Integer id, String password);
  }

注意要在类方法上加@Mapper 并且加这个类改变成一个接口,即改变成interface
这里为什么返回参数要是user类型呢?其实是有考究的,因为实现这个业务的逻辑是获取前端输入的账号和密码,然后后端检验账号密码是否正确,这个sql一般就是 select * from where username = “???” and password = “???”,而这个sql执行之后得到的信息是username和password的信息,而这两个信息正好就是user类里的属性,所以返回的类型是user
3.创建一个名字和dao(mapper)类同名的xml,放在dao(mapper)包下,和dao(mapper)类同级,如图:
在这里插入图片描述
在创建好的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.demo.Mapper.UserMapper">
    <resultMap id="BaseResultMap" type="com.example.demo.Model.User">
        <id column="ID" jdbcType="INTEGER" property="id"/>
        <result column="PASSWORD" jdbcType="VARCHAR" property="password"/>
        <result column="USERNAME" jdbcType="VARCHAR" property="username"/>
        <result column="POWER" jdbcType="INTEGER" property="power"/>
    </resultMap>
    <select id="login"  resultType="com.example.demo.Model.User">
        select * from user where USERNAME= #{username} and PASSWORD = #{password};
    </select>
</mapper>

其中mapper namespace = “com.example.demo.Mapper.UserMapper”是用于绑定Dao(mapper)接口的,当你的namespace绑定接口后,你可以不用写接口实现类,mybatis会通过该绑定自动帮你找到对应要执行的SQL语句(通过Dao(mapper)方法名绑定)。
resultMap 元素定义了一个id叫做BaseResulmap的标识,type代表使用哪种类作为其映射的类,可以是别名或者全限定名
id column=“ID” jdbcType=“INTEGER” property=“id” 是主键
result column=“PASSWORD” jdbcType=“VARCHAR” property=“password”/就是表里的属性,这里只需要定义username和passwor就可以了
select id=“login” resultType=“com.example.demo.Model.User”
这个id很重要而且必须要和dao(mapper)接口方法名保持一致

    @Mapper
 public interface UserMapper {
  //登录
  public User login(String username, String password);(就是这个login,以后开发中xml里的sql方法id都要和这个方法名对应)
  }

如果不保持一致的话很简单,会报错,程序会没反应。
3.编写service层
先创建一个service类,把这个类改成接口

public interface UserService {
    Integer login(User model);
    }

在这里我用了返回类型是Integer是因为在业务层我打算通过判断integer来执行操作
接着写一个serviceimpl类,

@Service
public class UserServiceImpl implements UserService {
    @Autowired(required=true)
    UserMapper userMapper;
    @Override
    public Integer login(User model) {
        String username=model.getusername();
        String password=model.getPassword();
        User list =userMapper.login(username,password);
        if (list!= null){
            return 1;
        }else {
            return 0;
        }
    }
}

@Service注解要加上,效果和@mapper一样,都是自动配置,可以暂时不用深入理解,记住要加就行
@Autowirte注解就是自动写入、自动注入的意思,这个注解底下加什么类,就可以获取这个类的所有方法,知道是这样就行了
这个方法要实现implements 之前写的serivce接口
重写login方法
业务逻辑是创建账号和密码对象,分别取得mode这个参数中的username和password,然后把取得的参数传给userMapper.login()方法中得到返回的一个User list对象。
然后对list进行判断,如果这个list是个null就是里面什么信息都没有(执行的select什么都没有查出来)就返回一个0,有就返回一个1。
4.写controller类,业务层代码

@RequestMapping("/users")
@RestController
public class UserController {
    @Autowired(required=true)
    UserService userService;
    @Autowired
    UserMapper userMapper;
    //登录
 @GetMapping(value = "/login")
    public String login(@RequestParam(value = "username") String username,@RequestParam(value = "password")String password){
          User user = new User(username,password);
          int a = userService.login(user);
          if (a==1){
              return "登录成功";
          }else {
              return "登录失败";
          }
      }
 }
}

这个业务逻辑和servic的差不多,这里就是对userService.login(user)方法返回的0和1进行判断操作
最后,启动Application程序
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在讲一下 http://localhost:8080/users/login?password=admin&id=123456789 ,其中users/login是我之前讲过的路径,路径后面加?是必须的,然后就是你要传入的参数名字和对应的值。

好啦! 经过测试,这个登录也就是查询功能基本实现。有时间我会把增删改的方法也传上来讲解一下,最后声明一下,我的这篇博客纯粹只是为了基础薄弱的但又参加工作无从下手的小伙伴参考使用的,不涉及任何底层原理或代码讲解,我本人也是一个基础薄弱入职一年的菜鸟程序员,希望各位大佬嘴下留情,有什么提点可以友好的讲出来,我在这里感激不尽!

### 回答1: Spring BootMyBatis是一种常见的Java Web开发框架,可以用来实现增删改查操作。具体步骤如下: 1. 配置数据库连接信息,包括数据库驱动、数据库URL、用户名和密码等。 2. 创建实体类,用于映射数据库表结构。 3. 创建Mapper接口,定义增删改查方法。 4. 创建Mapper.xml文件,编写SQL语句,实现Mapper接口中定义的方法。 5. 创建Service层,调用Mapper接口中的方法,实现业务逻辑。 6. 创建Controller层,接收请求,调用Service层中的方法,返回响应。 7. 配置Spring Boot启动类,启动应用程序。 以上是实现增删改查基本步骤,具体实现过程需要根据具体业务需求进行调整。 ### 回答2: SpringBoot是一个用于构建基于Spring的应用程序的框架,它是建立在Spring之上的一种轻量级解决方案。MyBatis是一种开源的持久化框架,它是基于Java的持久层框架。SpringBootMyBatis可以很好地协作,用于开发各种类型的Web应用程序。在SpringBoot中使用MyBatis实现增删改查操作非常简单,一下是具体操作: 1.数据库配置 首先需要进行数据库配置,可在application.properties(或application.yml)中进行配置,SpringBoot会自动加载这些配置。 spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver 2.依赖配置 pom文件中添加MyBatisMySQL连接驱动的依赖,如下: <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.3</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.23</version> </dependency> 3.实体类编写 创建实体类并添加注解@Table(name="表名")、@Id等等,如下: @Table(name="userinfo") public class User { @Id private Integer id; private String name; private Integer age; private String address; //省略setter和getter方法 } 4.DAO接口编写 编写DAO接口,如下: public interface UserDao { List<User> getAll(); User getById(Integer id); void insert(User user); void update(User user); void delete(Integer id); } 5.Mapper文件编写 在src/main/resources/mapper下创建Mapper文件,定义SQL语句和方法映射关系,如下: <?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.dao.UserDao"> <resultMap id="userMap" type="com.example.demo.model.User"> <id property="id" column="id"/> <result property="name" column="name"/> <result property="age" column="age"/> <result property="address" column="address"/> </resultMap> <select id="getAll" resultMap="userMap"> SELECT id, name, age, address FROM userinfo </select> <select id="getById" resultMap="userMap"> SELECT id, name, age, address FROM userinfo WHERE id = #{id} </select> <insert id="insert" parameterType="com.example.demo.model.User"> INSERT INTO userinfo(name, age, address) VALUES (#{name}, #{age}, #{address}) </insert> <update id="update" parameterType="com.example.demo.model.User"> UPDATE userinfo SET name = #{name}, age = #{age}, address = #{address} WHERE id = #{id} </update> <delete id="delete" parameterType="int"> DELETE FROM userinfo WHERE id = #{id} </delete> </mapper> 6.DAO接口实现 编写DAO接口实现类UserDaoImpl,代码如下: @Repository public class UserDaoImpl implements UserDao { @Autowired private SqlSessionTemplate sqlSessionTemplate; private final String NAMESPACE = "com.example.demo.dao.UserDao"; @Override public List<User> getAll() { return this.sqlSessionTemplate.selectList(NAMESPACE + ".getAll"); } @Override public User getById(Integer id) { return this.sqlSessionTemplate.selectOne(NAMESPACE + ".getById",id); } @Override public void insert(User user) { this.sqlSessionTemplate.insert(NAMESPACE + ".insert",user); } @Override public void update(User user) { this.sqlSessionTemplate.update(NAMESPACE + ".update",user); } @Override public void delete(Integer id) { this.sqlSessionTemplate.delete(NAMESPACE + ".delete",id); } } 7.Controller层编写 创建Controller层方法,调用DAO层方法,如下: @RestController @RequestMapping("user") public class UserController { @Autowired private UserDao userDao; @GetMapping(value="/getAll") public List<User> getAll() { return userDao.getAll(); } @GetMapping(value="/getById/{id}") public User getById(@PathVariable("id") Integer id) { return userDao.getById(id); } @PostMapping(value="/insert") public void insert(@RequestBody User user) { userDao.insert(user); } @PutMapping(value="/update") public void update(@RequestBody User user) { userDao.update(user); } @DeleteMapping(value="/delete/{id}") public void delete(@PathVariable("id") Integer id) { userDao.delete(id); } } 以上就是利用SpringBootMyBatis完成增删改查操作的详细步骤,可参考实际开发需求进行编写。 ### 回答3: Spring Boot 是一个快速开发框架,它提供了很多默认配置,可以帮助开发者快速地搭建一个项目。MyBatis 是一个持久层框架,可以帮助我们更加方便地操作数据库。Spring BootMyBatis 结合起来使用,可以帮助我们更加方便地实现数据库增删改查操作。 一、环境搭建 首先需要在 pom.xml 文件中引入 Spring BootMyBatis 的依赖。 ``` <!--Spring Boot 依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.4.5</version> </dependency> <!--Mybatis 依赖--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.0</version> </dependency> ``` 其次,在 application.properties 文件中配置数据源相关信息。 ``` # 数据库配置 spring.datasource.url= jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.jdbc.Driver #Mybatis 配置 mybatis.mapper-locations=classpath:mapper/*.xml mybatis.type-aliases-package=com.example.demo.entity ``` 二、创建实体对象和 Mapper 在 Spring Boot 中,我们可以利用注解来快速地完成实体对象和 Mapper 的创建。 1. 创建实体对象 ``` @Data @AllArgsConstructor @NoArgsConstructor public class User { private Integer id; private String name; private Integer age; } ``` 2. 创建 Mapper ``` @Mapper @Component public interface UserMapper { List<User> selectAll(); User selectById(Integer id); int insert(User user); int update(User user); int deleteById(Integer id); } ``` 三、实现增删改查 1. 实现插入操作 ``` @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public boolean insert(User user) { int result = userMapper.insert(user); return result == 1; } } ``` 2. 实现查询操作 ``` @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public List<User> selectAll() { return userMapper.selectAll(); } @Override public User selectById(Integer id) { return userMapper.selectById(id); } } ``` 3. 实现更新操作 ``` @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public boolean update(User user) { int result = userMapper.update(user); return result == 1; } } ``` 4. 实现删除操作 ``` @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public boolean deleteById(Integer id) { int result = userMapper.deleteById(id); return result == 1; } } ``` 以上就是 Spring BootMyBatis 结合,实现数据库增删改查操作的具体步骤。通过使用注解来创建实体对象和 Mapper,能够让我们更加方便地进行数据库操纵。同时,在进行数据库操作时,需要注意事务的处理,避免出现数据异常的情况。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值