Java spring boot整合MyBatis操作数据库

MyBatis的前身是Apache社区的一个开源项目iBatis,于2010年更名为MyBatis。MyBatis是支持定制化SQL、存储过程和高级映射的优秀持久层框架。它避免了几乎所有的JDBC代码、手动设置参数和获取结果集的操作,使得开发人员更加关注SQL本身和业务逻辑,不用再花费时间关注整个复杂的JDBC操作过程。

MyBatis的优点如下所示。

①封装了JDBC大部分操作,减少了开发人员的工作量

②半自动化的操对于编写SQL语句灵活度更高

③Java代码与SQL语句分离,降低维护难度

④自动映射结果集,减少重复的编码工作⑤开源社区十分活跃,文档齐全,学习成本低

使用方法

一、添加依赖

// maven
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.2.2</version>
    </dependency>
    // 因为用的是MySQL数据库,所以引入MySQL驱动
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.28</version>
    </dependency>

        
    // gradle
	implementation group: 'org.mybatis.spring.boot', name: 'mybatis-spring-boot-starter', version: '2.2.2'
	implementation group: 'mysql', name: 'mysql-connector-java', version: '8.0.28'

二**、application.properties的配置**

#数据库账号密码和地址
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.url=jdbc:mysql://localhost:3306/java?useUnicode=true&characterEncoding=UTF-8
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# resources 下mapper文件夹中的xxxMapper.xml文件,看个人路径及命名,使用注解版可以不用此配置
mybatis.mapper-locations=classpath:mapper/*Mapper.xml  
# 实体类文件夹通常pojo、entity
mybatis.type-aliases-package=com.Charity.pojo

三**、开启包扫描**

package org.java.mybatis;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan(basePackages = "org.java.mybatis.mapper") //放mapper文件夹位置,看个人的项目结构
public class MybatisApplication {
    public static void main(String[] args) {
    	SpringApplication.run(MybatisApplication.class, args);
    }
}

四、创建实体类

实体类基本在pojo或者entity文件夹下创建,文件夹基本也是自己新建的。

package org.java.mybatis.pojo;

public class User {
    private int id;
    private String userName;
    private String sex;

    public int getId() {
        return id;
    }

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

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
   }

五、创建映射接口

映射接口类基本在mapper或者dao文件夹下创建,文件夹基本也是自己新建的。注:创建的是 interface 接口,不是普通Java类

1.注解版
package org.java.mybatis.mapper;
import org.java.mybatis.pojo.User;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.;
import java.util.List;

@Mapper
public interface UserMapper {
    @Select("SELECT * FROM `user`")
    @Results({
        @Result(property = "id", column = "id"),
        @Result(property = "userName", column = "user_name"),
        @Result(property = "sex", column = "user_sex")
    })
    List<User> list();

}
  • @Select:是查询类的注解,所有的查询均使用这个
  • @Result:修饰返回的结果集,关联实体类属性和数据库字段一一对应,如果实体类属性和数据库属性名保持一致,就不需要这个属性来修饰
  • 使用注解版可以不看下面的配置文件版
2.配置文件版
package org.java.mybatis.mapper;
import org.java.mybatis.pojo.User;

import java.util.List;

public interface UserMapper {
     List<User> list();

}

六、创建xml配置文件(个人说法,我不知道是不是这样说)

在resource文件夹下创建mapper文件夹,再在mapper文件夹下创建xxxMapper.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="org.java.mybatis.mapper.UserMapper"> #namespace要对应接口类位置
	# 上面都是固定的文件头
    
    # 在mapper里面写sql语句, id是上面接口类的方法名, resultType是返回的类型
    <select id="list" resultType="org.java.mybatis.pojo.User">
        select * from user
    </select>
    
</mapper>

注: 使用配置文件,还可以有很多功能,感兴趣的可以自行去了解。这里就不多阐述了!

如有不对之处,请各位大佬指正。