欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SpringBoot 整合jdbc和mybatis

程序员文章站 2023-04-04 15:44:47
摘要 该文章主要为记录如何在SpringBoot项目中整合JDBC和MyBatis,在整合中我会使用简单的用法和测试用例,毕竟该文章目的是为了整合,而不是教大家如何去使用。希望大家多多包涵。 通用配置 下面介绍的整合JDBC和整合MyBatis都需要添加的实体类和配置 数据库表 sql CREATE ......

摘要

该文章主要为记录如何在springboot项目中整合jdbc和mybatis,在整合中我会使用简单的用法和测试用例,毕竟该文章目的是为了整合,而不是教大家如何去使用。希望大家多多包涵。

通用配置

下面介绍的整合jdbc和整合mybatis都需要添加的实体类和配置

数据库表

create table `user`  (
  `id` int(11) not null auto_increment,
  `username` varchar(255) character set utf8mb4 collate utf8mb4_0900_ai_ci not null,
  `address` varchar(255) character set utf8mb4 collate utf8mb4_0900_ai_ci not null,
  primary key (`id`) using btree
) engine = innodb auto_increment = 4 character set = utf8mb4 collate = utf8mb4_0900_ai_ci row_format = dynamic;

set foreign_key_checks = 1;

实体类

添加简单的user实体类,用于下面jdbc和mybatis的使用和测试。再添加一个tostring方法为了测试时看结果比较简单。

public class user {

    private integer id;

    private string username;

    private string address;

    public integer getid() { return id; }

    public void setid(integer id) { this.id = id; }

    public string getusername() { return username; }

    public void setusername(string username) { this.username = username; }

    public string getaddress() { return address; }

    public void setaddress(string address) { this.address = address; }

    @override
    public string tostring() {
        return "user{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", address='" + address + '\'' +
                '}';
    }
}

maven配置

mysql版本根据自己数据库版本设置
druid为阿里云提供的数据源(可理解为连接池)

<dependency>
    <groupid>com.alibaba</groupid>
    <artifactid>druid-spring-boot-starter</artifactid>
    <version>1.1.10</version>
</dependency>
<dependency>
    <groupid>mysql</groupid>
    <artifactid>mysql-connector-java</artifactid>
    <scope>runtime</scope>
    <version>8.0.18</version>
</dependency>

数据库配置

数据库properties配置肯定是少不的啦.

spring.datasource.type=com.alibaba.druid.pool.druiddatasource
spring.datasource.username=username
spring.datasource.password=password
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mydatabase


整合jdbc

maven依赖

添加springboot提供的jdbc依赖

<dependency>
    <groupid>org.springframework.boot</groupid>
    <artifactid>spring-boot-starter-data-jdbc</artifactid>
</dependency>

使用

@service
public class userservice {

    @autowired
    jdbctemplate jdbctemplate;

    public integer adduser(user user) {
        return jdbctemplate.update("insert into user (username,address) values (?,?);",
                user.getusername(), user.getaddress());
    }

    /**
     * 查询方式一
     * 当类属性和数据库字段不对应时才这样使用
     * @return
     */
    public list<user> getalluserfirst() {
        return jdbctemplate.query("select * from user;", new rowmapper<user>() {
            @override
            public user maprow(resultset resultset, int i) throws sqlexception {
                user user = new user();
                int id = resultset.getint("id");
                string address = resultset.getstring("address");
                string username = resultset.getstring("username");
                user.setid(id);
                user.setusername(username);
                user.setaddress(address);
                return user;
            }
        });
    }

    /**
     * 查询方式二
     * 当类属性和数据库字段对应时就这样使用啦,比上面的简洁很多
     */
    public list<user> getallusersecond() {
        return jdbctemplate.query("select * from user;", new beanpropertyrowmapper<>(user.class));
    }
}

这里需要记一下,jdbc不论新增,修改,删除都是使用update方法。而查询则是使用query
如果数据库字段和实体类属性不一致时,则需要使用上面代码中的查询方式一
如果数据库字段和实体类属性全都一致时,则可以使用上面代码中的查询方式二,简单快捷。

测试

整理完后当然是少补了测试的啦,测试类如下:

@springboottest
class jdbcapplicationtests {

    @autowired
    userservice userservice;

    @test
    public void adduser() {
        user user = new user();
        user.setusername("johnson2");
        user.setaddress("colablog.cn");
        userservice.adduser(user);
    }

    public void queryusers() {
        list<user> alluserfirst = userservice.getalluserfirst();
        system.out.println(alluserfirst);
    }
}


整合mybatis

当下最流行的持久层框架mybatis,天天ssm,听到耳朵都起茧子了。整合mybatis可能是使用到最多的,整合如下:

maven依赖

版本的话可以查看

<dependency>
    <groupid>org.mybatis.spring.boot</groupid>
    <artifactid>mybatis-spring-boot-starter</artifactid>
    <version>2.1.1</version>
</dependency>

扫描mapper

需要提供mapper路径给springboot进行扫描,我的包扫描路径为cn.colablog.mybatis.mapper
方式一:自己添加一个配置项

@configuration
@mapperscan(basepackages = "cn.colablog.mybatis.mapper")
public class mybatisconfig {
}

方式二:直接在application上配置

@springbootapplication
@mapperscan(basepackages = "cn.colablog.mybatis.mapper")
public class mybatisapplication {
    public static void main(string[] args) {
        springapplication.run(mybatisapplication.class, args);
    }
}

mapper映射

usermapper接口

在mapper包cn.colablog.mybatis.mapper目录下添加usermapper接口

@mapper
public interface usermapper {
    list<user> getalluser();
}

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.colablog.mybatis.mapper.usermapper">
    <select id="getalluser" resulttype="com.colablog.mybatis.bean.user">
        select * from user
    </select>
</mapper>

存放方式有三种:
方式一(默认)
springboot默认找mapper.xml是在resources目录下,例如映射user类的路径在java目录下的cn.colablog.mybatis.mapper
那么usermapper.xml就需要放在resources目录下的cn.colablog.mybatis.mapper.
注意:如果你使用的是idea开发工具,resource下添加目录不能这样添加:
SpringBoot 整合jdbc和mybatis
这样添加idea只会帮你添加一个名为cn.colablog.mybatis.mapper的目录,所以你需要逐个目录依次添加,存放位置如下:
SpringBoot 整合jdbc和mybatis

方式二
在properties文件中进行配置存放路径:

mybatis.mapper-locations=classpath:/mapper/*.xml

存放位置如下:
SpringBoot 整合jdbc和mybatis

方式三
在pom.xml中配置resource需要加载java目录下的xml文件:

    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
        </resources>
        ...
    </build>

这样你可以和usermapper接口存放在同一个目录下,存放位置如下:
SpringBoot 整合jdbc和mybatis

文章到这里就结束啦!接下来我会继续编写关于springboot的文章,有兴趣的话可以看看我的前两篇关于springboot web篇文章哦。
感谢各位的阅读,文章若有不足之处或更好的建议,请在下方留言,thanks♪(・ω・)ノ。