整合篇:零基础学习与使用MyBatis

配套资料,免费下载
链接:https://pan.baidu.com/s/1jA217UgqXpONi_fV-aOzqw
提取码:bm2g
复制这段内容后打开百度网盘手机App,操作更方便哦

注意:学习MyBatis请参考我的另外一篇文章:https://caochenlei.blog.csdn.net/article/details/108809821

1、创建工程

image-20210105100829029

image-20210105101052256

image-20210105101130794

image-20210105101145809

image-20210105102900513

image-20210105101413376

2、导入依赖

导入数据库连接池场景启动器:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.4</version>
</dependency>

修改默认数据库连接驱动为5.x:

<properties>
    <java.version>1.8</java.version>
    <mysql.version>5.1.49</mysql.version>
</properties>

3、修改配置

创建包结构:

  • com.caochenlei.integrationmybatis.entity
  • com.caochenlei.integrationmybatis.vo
  • com.caochenlei.integrationmybatis.mapper
  • com.caochenlei.integrationmybatis.service
  • com.caochenlei.integrationmybatis.controller

创建数据库:

DROP DATABASE IF EXISTS `test`;

CREATE DATABASE `test`;

USE `test`;

DROP TABLE IF EXISTS `t_user`;

CREATE TABLE `t_user` (
  `uid` INT(11) NOT NULL AUTO_INCREMENT,
  `uname` VARCHAR(20) NOT NULL,
  `ugender` VARCHAR(20) NOT NULL,
  `uage` INT(11) NOT NULL,
  PRIMARY KEY (`uid`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;

INSERT INTO `test`.`t_user` (`uname`, `ugender`, `uage`) VALUES ('张三', '男', '18'); 
INSERT INTO `test`.`t_user` (`uname`, `uage`) VALUES ('李四', '女', '19'); 
INSERT INTO `test`.`t_user` (`uname`, `uage`) VALUES ('王五', '20'); 

配置数据源:

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/test
    username: root
    password: 123456
    #druid控制台访问地址:http://localhost:8080/druid
    druid:
      filters: stat,wall
      stat-view-servlet:
        enabled: true
        login-username: admin
        login-password: admin
      web-stat-filter:
        enabled: true
        urlPattern: /*
        exclusions: '*.css,*.js,*.gif,*.jpg,*.png,*.ico,/druid/*'

mybatis:
  #配置 mybatis 配置文件位置
  config-location: classpath:mybatis/mybatis-config.xml
  #配置 mybatis 映射文件位置
  mapper-locations: classpath:mybatis/mapper/*.xml

4、增删改查

com.caochenlei.integrationmybatis.vo.Result

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Result {
    private Boolean success;
    private Object data;
    private String message;
}

com.caochenlei.integrationmybatis.entity.User

@Data
public class User{
    private Integer uid;
    private String uname;
    private String ugender;
    private Integer uage;
}

com.caochenlei.integrationmybatis.mapper.UserMapper

@Mapper
public interface UserMapper {
    //查找一个用户
    public User findOne(Integer id);

    //查找所有用户
    public List<User> findAll();

    //添加一个用户
    public Integer save(User user);

    //删除一个用户
    public Integer delete(Integer id);

    //修改一个用户
    public Integer update(User user);
}

src\main\resources\mybatis\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.caochenlei.integrationmybatis.mapper.UserMapper">
    <!--查找一个用户-->
    <select id="findOne" resultType="com.caochenlei.integrationmybatis.entity.User">
        select * from t_user where uid=#{id}
    </select>

    <!--查找所有用户-->
    <select id="findAll" resultType="com.caochenlei.integrationmybatis.entity.User">
        select * from t_user
    </select>

    <!--添加一个用户-->
    <insert id="save" useGeneratedKeys="true" keyProperty="uid">
        insert into t_user(uname,ugender,uage)
        values(#{uname},#{ugender},#{uage})
    </insert>

    <!--删除一个用户-->
    <delete id="delete">
        delete from t_user where uid=#{id}
    </delete>

    <!--修改一个用户-->
    <update id="update">
        update t_user
        set uname=#{uname},ugender=#{ugender},uage=#{uage}
        where uid=#{uid}
    </update>
</mapper>

src\main\resources\mybatis\mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

</configuration>

com.caochenlei.integrationmybatis.service.UserService

public interface UserService {
    //查找一个用户
    public User findOne(Integer id);

    //查找所有用户
    public List<User> findAll();

    //添加一个用户
    public Integer save(User user);

    //删除一个用户
    public Integer delete(Integer id);

    //修改一个用户
    public Integer update(User user);
}

com.caochenlei.integrationmybatis.service.impl.UserServiceImpl

@Service
@Transactional
public class UserServiceImpl implements UserService {
    @Autowired
    private UserMapper userMapper;

    @Override
    public User findOne(Integer id) {
        return userMapper.findOne(id);
    }

    @Override
    public List<User> findAll() {
        return userMapper.findAll();
    }

    @Override
    public Integer save(User user) {
        return userMapper.save(user);
    }

    @Override
    public Integer delete(Integer id) {
        return userMapper.delete(id);
    }

    @Override
    public Integer update(User user) {
        return userMapper.update(user);
    }
}

com.caochenlei.integrationmybatis.controller.UserController

@RestController
public class UserController {
    @Autowired
    private UserService userService;

    //查找一个用户
    @GetMapping("/users/{id}")
    public Result findOne(@PathVariable Integer id) {
        User user = userService.findOne(id);
        return new Result(true, user, "操作成功");
    }

    //查找所有用户
    @GetMapping("/users")
    public Result findAll() {
        List<User> users = userService.findAll();
        return new Result(true, users, "操作成功");
    }

    //添加一个用户
    @PostMapping("/users")
    public Result save(@RequestBody User user) {
        Integer rows = userService.save(user);
        if (rows > 0) {
            return new Result(true, rows, "操作成功");
        } else {
            return new Result(false, "操作失败");
        }
    }

    //删除一个用户
    @DeleteMapping("/users/{id}")
    public Result delete(@PathVariable Integer id) {
        Integer rows = userService.delete(id);
        if (rows > 0) {
            return new Result(true, "操作失败");
        }
    }

    //修改一个用户
    @PutMapping("/users")
    public Result update(@RequestBody User user) {
        Integer rows = userService.update(user);
        if (rows > 0) {
            return new Result(true, "操作失败");
        }
    }
}

5、测试接口

  • 查找一个用户

image-20210105132405881

  • 查找所有用户

image-20210105132432424

  • 添加一个用户

image-20210105132611731

  • 删除一个用户

image-20210105132510396

  • 修改一个用户

image-20210105132646691

相关文章

Nacos 中的参数有很多,如:命名空间、分组名、服务名、保护...
Nacos 支持两种 HTTP 服务请求,一个是 REST Template,另一...
Nacos 是 Spring Cloud Alibaba 中一个重要的组成部分,它提...
Spring Cloud Alibaba 是阿里巴巴提供的一站式微服务开发解决...
在 Nacos 的路由策略中有 3 个比较重要的内容:权重、保护阈...
前两天遇到了一个问题,Nacos 中的永久服务删除不了,折腾了...