Spring boot集成Mybatis通用mapper实现增删改查

Spring boot集成Mybatis通用mapper

1、首先新建Spring boot项目
2、创建各种包
在这里插入图片描述
我的目录结构
3、引入相关依赖pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.0.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.zly</groupId>
    <artifactId>tjproject</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    <name>tjproject</name>
    <description>Demo project for Spring Boot</description>

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

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--通用mapper-->
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-spring-boot-starter</artifactId>
            <version>RELEASE</version>
        </dependency>

        <!-- mybatis启动器 -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>
        <!-- mysql数据库驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <!-- druid数据库连接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.0</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

4、配置application.properties连接数据库文件

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC&zeroDateTimeBehavior=convertToNull
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
#mybatis
mybatis.type-aliases-package=com.example.mapper
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.configuration.map-underscore-to-camel-case=true
mapper.mappers=com.zly.tjproject.util.MyMapper
mapper.not-empty=false
mapper.identity=MYSQL

5、创建通用mapper工具类MyMapper.java

package com.zly.tjproject.util;

import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;

/**
 * @author Abell
 * @Description: 通用mapper工具类
 * @date 2019/11/9 16:39
 */
public interface MyMapper<T> extends Mapper<T>, MySqlMapper<T> {

}

6、创建Controller层UserController

package com.zly.tjproject.controller;

import com.zly.tjproject.pojo.User;
import com.zly.tjproject.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * @author Abell
 * @Description: 用户Controller
 * @date 2019/11/9 16:45
 */
@RestController
@RequestMapping(value = "/user")
public class UserController {
    @Autowired
    private UserService userService;

    /**
     * 查询用户列表
     *
     * @return
     */
    @RequestMapping(value = "/getUserList")
    public List<User> getUserList() {
        List<User> userList = userService.getUserList();
        return userList;
    }

    /**
     * 新增用户
     *
     * @return
     */
    @RequestMapping(value = "/addUser")
    public void addUser() {
        User user = new User();
        user.setName("小四");
        user.setPwd("8888");
        userService.addUser(user);
    }

    /**
     * 修改用户
     *
     * @return
     */
    @RequestMapping(value = "/updUser")
    public void updUser() {
        User user = new User();
        user.setId(1);
        user.setName("小四");
        user.setPwd("9999");
        userService.updUser(user);
    }

    /**
     * 删除用户
     *
     * @return
     */
    @RequestMapping(value = "/delUser")
    public void delUser() {
        userService.delUser(1);
    }
}

7、创建mapper层UserMapper.java

package com.zly.tjproject.mapper;

import com.zly.tjproject.pojo.User;
import com.zly.tjproject.util.MyMapper;
import org.apache.ibatis.annotations.Mapper;

/**
 * @author Abell
 * @Description: 用户mapper
 * @date 2019/11/9 16:44
 */
@Mapper
public interface UserMapper extends MyMapper<User> {
}

因为用的是通用mapper,一般的方法都在里面,所有这里面不用写任何接口。
8、创建service层UserService.java

package com.zly.tjproject.service;

import com.zly.tjproject.pojo.User;

import java.util.List;

/**
 * @author Abell
 * @Description: 服务层接口
 * @date 2019/11/9 16:43
 */
public interface UserService {

    /**
     * 获取用户列表
     *
     * @return
     */
    List<User> getUserList();

    /**
     * 新增用户
     */
    void addUser(User user);

    /**
     * 修改用户
     *
     * @param user
     */
    void updUser(User user);

    /**
     * 根据id删除用户
     *
     * @param i
     */
    void delUser(int i);
}

9、创建Service层接口的实现层UserServiceImpl.java

package com.zly.tjproject.service.impl;

import com.zly.tjproject.mapper.UserMapper;
import com.zly.tjproject.pojo.User;
import com.zly.tjproject.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import tk.mybatis.mapper.entity.Example;

import java.util.List;

/**
 * @author Abell
 * @Description: 服务层接口的实现
 * @date 2019/11/9 16:44
 */
@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public List<User> getUserList() {
        //这里也可以使用
        //Example example = new Example(User.class);
        //userMapper.selectByExample(example);
        //如果再用
        //Example example = new Example(User.class);
        //Example.Criteria criteria = example.createCriteria();
        //criteria.and~~~~  等等有很多方法都可以用的,举个例子
        //criteria.andEqualTo("实体类字段名","要等于的值");这就是按照某一个字段的值进行查询
        //如果没有什么条件约束的话就直接用下面的selectAll()方法
        return userMapper.selectAll();
    }

    @Override
    public void addUser(User user) {
        //这里最简单的是直接用insert插入
        //也可以使用userMapper.insertSelective() 区别是这个会判断你的user对象里面的字段是否为空,为空就不插入了
        //还有一个userMapper.insertUseGeneratedKeys()这个可以插入对象并且返回你这个插入这一列的自增主键的id,
        // 返回的方法我博客里面有写,搜索"tk通用mapper插入对象返回主键id"
        //如果要插入集合的话使用userMapper.insertList(你的对象集合)
        userMapper.insert(user);
    }

    @Override
    public void updUser(User user) {
        //这里还有
        //userMapper.updateByExample();
        //userMapper.updateByExampleSelective();
        //userMapper.updateByPrimaryKey();等这些方法,不过我一般用下面这个,根据主键更新,并且当对象中有空值的时候不更新对应的,
        // 如果用不带Selective的你对象里面有空值直接给你更新成空值,可以测试下
        userMapper.updateByPrimaryKeySelective(user);
    }

    @Override
    public void delUser(int i) {
        //这里我一般是根据主键删除id的
        //也有
        //userMapper.delete();
        //userMapper.deleteByExample(); 等方法 你们可以自己动手测试下,就知道什么意思了
        userMapper.deleteByPrimaryKey(i);
    }


}

10、实体类好像忘记了,创建实体类User

package com.zly.tjproject.pojo;

import javax.persistence.*;

/**
 * @author Abell
 * @Description: 用户实体类
 * @date 2019/11/9 16:41
 */
@Table(name = "t_user")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Integer id;
    @Column(name = "name")
    private String name;
    @Column(name = "pwd")
    private String pwd;

    public Integer getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
}

然后运行项目访问:http://localhost:8080/user/getUserList addUser updUser delUser这四个。
不要忘记创建数据库,还有看好数据库的名称和配置文件还有实体类里面的是否一致。
这样就实现了Spring boot集成通用mapper,建议你们把我的代码下载下来,这样能够研究的更透彻,当然复制也是一样的。这是针对小白的一篇文章,我也是小白,有兴趣的话可以一起交流。QQ:619438365

发布了31 篇原创文章 · 获赞 13 · 访问量 7938

猜你喜欢

转载自blog.csdn.net/weixin_42322648/article/details/102989392