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>
注: 使用配置文件,还可以有很多功能,感兴趣的可以自行去了解。这里就不多阐述了!
如有不对之处,请各位大佬指正。