springboot整合mybatis

springboot整合mybatis

## 环境

spring boot2.4.4

MySQL5.7

自己错误了一万次最后总结了一下

步骤:

  1. 使用spring initaite 初始化一个项目,导入工具依赖(三种),web环境,jdbc环境,Mysql驱动依赖(剩下的先不导入)。

image-20210521170338103

image-20210521170410669

  1. 这是需要自己手动修改MySQL驱动的版本号。因为我自己的MySQL是5.7版本的,这里的版本号是必须的。

  2. 然后填写application.properties的jdbc连接数据库的必填四项。

    spring.datasource.url=jdbc:mysql://localhost:3306/bootpra?serverTimeZone=UTC?useSSL=false
    spring.datasource.username=root
    spring.datasource.password=0000
    #这里我没有使用带cj的驱动,我的5.7需要的是不带cj的低版本驱动。
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    
  3. 接下来就直接测试到底能不能连接上数据库。进入springboot test

image-20210521170850187

@Autowired
Datasource datasource;

@Test
    void contextLoads() {
    sout(datasource.getClass());
    }

要是正确的话能正常的运行,而且在最后会出现默认的HikariDataSource
  1. 至此我们的连接任务就完成了。接下来就直接导入Mybatis依赖来进行编写了。

    image-20210521171517471

至于druid数据池可以配置可以不配置我这里是配置了的。

image-20210521171614702

  1. 又由于mybatis和druid都不是spring“本土”的依赖,所以要自己编写配置

    #这个依赖就是在.xml绑定方法的resultType,ParameterType时,不用再写com.ws.poio.xxx了,就直接写成类名 User就行,图片如下。
    mybatis.type-aliases-package=com.ws.bootowetry02.pojo
    
    #这个依赖就是所有的Mapper对应的.xml文件都要写在这个下面,
    #切记!是在resource下面先建立一个mybatis文件夹再建一个mapper文件夹
    #而不是直接在resource下面建立Mapper文件夹。这样子实测不行!!!!
    #而且这里不能写成/mybatis/mapper/*.xml!!!!!
    #因为mapper_location:classpath代表着是resource文件夹
    #classpath:mybatis/mapper/*.xml代表着从resource文件夹开始找
    #classpath:/mybatis/mapper/*.xml代表着从最最最开始的项目名开始往下找。
    mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
    
    
    #这个就是从默认的HikariDataSource转成Druid了
    spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
    
  2. 编写完这些配置剩下的就剩各种层的编写了,我直接给出代码。

    image-20210521172540777

    • 总pom
    <?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.5.0</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.ws</groupId>
        <artifactId>boot-owe-try02</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>boot-owe-try02</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-jdbc</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</scope>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
               <version>5.1.47</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>2.1.4</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-configuration-processor</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid-spring-boot-starter</artifactId>
                <version>1.1.22</version>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <configuration>
                        <excludes>
                            <exclude>
                                <groupId>org.projectlombok</groupId>
                                <artifactId>lombok</artifactId>
                            </exclude>
                        </excludes>
                    </configuration>
                </plugin>
            </plugins>
            <resources>
                <resource>
                    <directory>src/main/resources</directory>
                    <includes>
                        <include>**/*.properties</include>
                        <include>**/*.xml</include>
                    </includes>
                    <filtering>true</filtering>
                </resource>
                <resource>
                    <directory>src/main/java</directory>
                    <includes>
                        <include>**/*.properties</include>
                        <include>**/*.xml</include>
                    </includes>
                    <filtering>true</filtering>
                </resource>
            </resources>
        </build>
    
    </project>
    
    
    #总配置
    spring.datasource.url=jdbc:mysql://localhost:3306/bootpra?serverTimeZone=UTC?useSSL=false
    spring.datasource.username=root
    spring.datasource.password=0000
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    mybatis.type-aliases-package=com.ws.bootowetry02.pojo
    mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
    spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
    
#pojo类
package com.ws.bootowetry02.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @author 王顺
 * @date 2021/5/21 - 12:18
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private int id;
    private String name;
    private String pwd;
}
//mapper
package com.ws.bootowetry02.mapper;

import com.ws.bootowetry02.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author 王顺
 * @date 2021/5/21 - 12:22
 */
@Mapper
public interface UserMapper {
    List<User> queryUserList();

    User queryUserById(int id);

    int addUser(User user);

    int updateUser(User user);

    int deleteUser(int id);
}

//service
package com.ws.bootowetry02.service;

import com.ws.bootowetry02.pojo.User;

import java.util.List;

/**
 * @author 王顺
 * @date 2021/5/21 - 16:11
 */
public interface UserService {
    List<User> queryUserList();

    User queryUserById(int id);

    int addUser(User user);

    int updateUser(User user);

    int deleteUser(int id);
}

//serviceImpl
package com.ws.bootowetry02.service.Impl;

import com.ws.bootowetry02.mapper.UserMapper;
import com.ws.bootowetry02.pojo.User;
import com.ws.bootowetry02.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author 王顺
 * @date 2021/5/21 - 16:11
 */
@Service
public class UserServiceImpl implements UserService {
    @Autowired
    UserMapper userMapper;

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

    @Override
    public User queryUserById(int id) {
        return userMapper.queryUserById(id);
    }

    @Override
    public int addUser(User user) {
        return userMapper.addUser(user);
    }

    @Override
    public int updateUser(User user) {
        return userMapper.updateUser(user);
    }

    @Override
    public int deleteUser(int id) {
        return userMapper.deleteUser(id);
    }
}

//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.ws.bootowetry02.mapper.UserMapper">
    <select id="queryUserList" resultType="User">
        select * from user
    </select>

    <select id="queryUserById" resultType="User">
        select * from user where id=#{id}
    </select>

    <insert id="addUser" parameterType="User" >
        insert into user(id,name,pwd) values (#{id},#{name},#{pwd})
    </insert>

    <update id="updateUser" parameterType="User">
        update user set name = #{name},pwd = #{pwd} where id = #{id}
    </update>

    <delete id="deleteUser" parameterType="int">
        delete from user where id =#{id
    </delete>
</mapper>

总结:花时间最长的几个方面

1.关于自己MySQL版本和驱动不一致问题

2.就是mapper与mapper.xml的映射问题,,这个是花了我最长时间的找错过程。

image-20210521173305730

在这个.xml的编写阶段,这里的namespace经常会报红,方案就是在确定了配置文件里面mapper-location是对的情况下,全部单词编写完,能够出现左侧的小鸟就对了。image-20210521173545111

还有一个就是对于表名的爆红,这个问题在我使用idea也连接上数据库就没问题了。

这里有个小小的注意事项,就是你在填写配置文件的url的时候,将数据库的名字加上,这样子这里就不用写成bootpra.user了。

jdbc:mysql://localhost:3306/bootpra

花了我最长时间的找错过程。

[外链图片转存中…(img-fAegXzf1-1621590067437)]

在这个.xml的编写阶段,这里的namespace经常会报红,方案就是在确定了配置文件里面mapper-location是对的情况下,全部单词编写完,能够出现左侧的小鸟就对了。[外链图片转存中…(img-zRawHjPX-1621590067439)]

还有一个就是对于表名的爆红,这个问题在我使用idea也连接上数据库就没问题了。

这里有个小小的注意事项,就是你在填写配置文件的url的时候,将数据库的名字加上,这样子这里就不用写成bootpra.user了。

jdbc:mysql://localhost:3306/bootpra
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值