文章目录
一、mybatis是什么?
MyBatis(前身是iBatis)是一个支持普通SQL查询、存储过程以及高级映射的持久层框架(半ORM[对象关系映射框架])。因为他内部封装了JDBC,使得开发者只需要关注sql本身,不需要去花费精力如何加载驱动,创建连接,创建statement之类的。编写原生态sql,可以严格控制sql的执行性能。
二、使用步骤
1.引入依赖包
2.在配置文件中
mybatis.mapper-locations=classpath:mapper/**.xml
3.mybatis的配置类
package com.ll.mango.config;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import javax.sql.DataSource;
/**
* @Author 奥特曼
* @Date 2021/8/10 0010 20:14
* @Description TODO
**/
@Configuration
// 扫描DAO包
@MapperScan("com.ll.mango.**.dao")
public class MybatisConfig {
@Autowired
private DataSource dataSource;
@Bean
public SqlSessionFactory sqlSessionFactory() throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
// 扫描VO包
sessionFactory.setTypeAliasesPackage("com.ll.mango.**.vo");
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
// 扫描映射文件
sessionFactory.setMapperLocations(resolver.getResources("classpath*:**/mapper/*.xml"));
return sessionFactory.getObject();
}}
4.使用Generator自动生成实体
4.1 在pom文件中添加插件依赖
<!--<!–mybatis generator插件自动生成映射文件,需要和pluginManagement同级别–>-->
<plugins>
<!--<!– mybatis generator 自动生成代码插件 –>-->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<configuration>
<configurationFile>${basedir}/src/main/resources/mybatis-generator/generatorConfig.xml</configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
<dependencies>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.7</version>
</dependency>
</dependencies>
</plugin>
</plugins>
<!--<!– 打包时拷贝MyBatis的映射文件 –>-->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/mapper/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.*</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
4.2 将mybatis-generator配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<!--配置要链接的数据库的数据源-->
<classPathEntry location="D:\\tools\\apache-maven-3.6.3\\repo\\mysql\\mysql-connector-java\\5.1.47/mysql-connector-java-5.1.47.jar"/>
<!---Mybatis上下文-->
<context id="MySqlContext" targetRuntime="MyBatis3">
<!--配置数据库的链接信息-->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/mangoproject" userId="mangoproject"
password="mangoproject"/>
<!--数据库BigDecimals字段在java中定义-->
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!--实体类生成信息(包名和位置)-->
<javaModelGenerator targetPackage="com.ll.mango.vo" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!--mybatis 的xml文件地址-->
<sqlMapGenerator targetPackage="mapper" targetProject="src/main/java/com/ll/mango">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!--mybatis的mapper接口即Dao层-->
<javaClientGenerator targetPackage="com.ll.mango.dao" targetProject="src/main/java" type="XMLMAPPER">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!--要生成的表结构-->
<table tableName="sys_user_role" domainObjectName="SysUserRole"
enableCountByExample="false" enableUpdateByExample="false"
enableDeleteByExample="false" enableSelectByExample="false"
selectByExampleQueryId="false">
</table>
</context>
</generatorConfiguration>
注意以下几点:
a、数据库驱动架包文件位置,即mysql-connector-java-x.jar架包位置,可以在maven仓库中查找,或者自己单独下载都可以。
b、数据库的url以及用户名密码等。
c、生成模型的包名和位置。
d、生成映射文件的包名和位置。
e、生成DAO的包名和位置。
f、添加要生成的表。
4.3 跑对应的插件
4.4 生成情况
总结
一、Mybatis工作流程
1.通过SqlSessionFactoryBuilder创建SqlSessionFactory对象
2.通过SqlSessionFactory创建SqlSession对象
3.通过SqlSession拿到Mapper代理对象
4.通过MapperProxy调用Mapper中增删改查的方法