mybatis-plus是mybatis的增强版,可以根据数据库自动生成代码,实现常用的增删改查功能,也可以按照mybatis的配置方式添加数据库命令。
参考地址:
generator: 文档 http://baomidou.com/
1、在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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 版本配置由springboot处理-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.2</version>
</parent>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.0</version>
</dependency>
</dependencies>
</project>
2、添加main函数执行文件,并在启动添加自动生成代码
public class TestMyBatisPlus {
public static void main(String[] args) {
FastAutoGenerator.create(new DataSourceConfig.Builder("jdbc:mysql://localhost:6666/db1",
"root", "密码").dbQuery(new MySqlQuery()))
.packageConfig(builder -> builder.parent("com.mybatisplus.generator"))
.execute();
}
}
3、执行这部分代码后会在D盘根目录下生成parent("com.mybatisplus.generator"))对应文件夹及文件,拷贝到项目中使用
生成后手动添加mybatis命令
1、在interface mapper对象中声明需要的函数
@Mapper
public interface UserMapper extends BaseMapper<Book> {
List<Book> getAll();
}
2、在application.yaml中添加配置,指定对应sql命令文件
mybatis-plus:
# 指定全局配置文件
config-location: classpath:mybatis-config.xml
# 指定mapper.xml的文件路径
mapper-locations:
- classpath*:com.mapper/*.xml
3、实现上面指向的配置文件
全局配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 别名配置。配置前缀,简化少写子目录 -->
<typeAliases>
<package name="com.mapper"/>
</typeAliases>
<!-- 可以配置多个服务器连接环境,通过default选择使用环境 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!-- 数据库连接信息 -->
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:6666/db1?useSSL=false&useServerPrepStmts=true"/>
<property name="username" value="root"/>
<property name="password" value="密码"/>
</dataSource>
</environment>
<environment id="test">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!-- 数据库连接信息 -->
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:6666/db1?useSSL=false&useServerPrepStmts=true"/>
<property name="username" value="root"/>
<property name="password" value="密码"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- 加载sql的映射文件 -->
<!-- <mapper resource="com.data.mapper/UserMapper.xml"/> -->
<!-- Mapper代理可以自动扫描里面的文件 -->
<package name="com.mapper"/>
</mappers>
</configuration>
对应mapper接口的xml配置文件(在上面配置的扫描路径com.mapper内)
<?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.mapper.UserMapper">
<select id="getAll" resultType="com.domain.Book">
select * FROM user
</select>
</mapper>
controller》service》mapper
controller层是用来接受前台数据和返回页面请求信息的
service层接受controller层信息,用于业务处理和逻辑判断。Service 用于处理业务逻辑,会调用mapper层的API;
mapper层用于和数据库交互,想要访问数据库并且操作,只能通过mapper层向数据库发送sql语句,将这些结果通过接口传给service层,对数据库进行数据持久化操作,他的方法语句是直接针对数据库操作的,主要实现一些增删改查操作,在mybatis中方法主要与与xxx.xml内相互一一映射。
entity:数据库与实体类中的字段要一一对应且需要命名一样
domain:表示一个对象模块,字段对应即可,命名可以不一样
dao:需要创建接口还要进行实现,有大量语句冗余,存在很多其它原始开发缺陷
mapper:只需要创建接口,采用自动注入;通过配置mapper.xml来进行映射