1. mybatis---->半自动的持久化框架。 持久化:把java中对象和数据库中的表映射起来。---ORM框架。
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
2. mybatis得入门步骤:
(1)引入mybatis得依赖
(2)在resources包下 创建mybatis的配置文件,如下:
其中有相关优化
<?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>
<!--属性文件-->
<properties resource="db.properties"/>
<!--别名设置-->
<typeAliases>
<package name="com.ghs.entity"/>
</typeAliases>
<plugins>
<!--pageHelper 插件-->
<plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<!--数据源name对应的值是固定的。 -->
<dataSource type="POOLED">
<property name="driver" value="${driverName}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<!--引入映射文件-->
<mappers>
<mapper resource="mapper/AccountMapper.xml"/>
<mapper resource="mapper/TblMapper.xml"/>
<mapper resource="mapper/DeprMapp.xml"/>
</mappers>
</configuration>
(3)mybatis得映射文件【sql,列和属性之间的映射】
3. mybatis得crud.
4. mybatis优化---->日志 数据库属性文件 实体类起别名
5. mybatis得列名和属性名不一致!(1)查询时为查询得列起别名 (2)使用resultMap
6. 联表查询 【1】多对一 <association property="" javaType=""/>
【2】一对多 <collection property="" ofType=""/>----->ResultMap
7. 动态sql语句:
<if test="条件">
<choose>
<when test=""></when>
<when test=""></when>
...
<otherwise></otherwise>
</choose>
<where>
条件where关键字 并删除第一个and | or
</where>
<set>
添加set关键字 并删除最后一个逗号
</set>
<foreach collection="list array map" item="变量" open="" close="">
<foreach>
<trim> 和where set
</trim>
8. sql片段
<sql id="标志">
查询得列
</sql>
<select>
select <include refid="标志"/> from
</select>
9. 代码生成器---->生产简单的单表增删改查
(1)引入jar(依赖)
<dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.4.0</version> </dependency>
(2)generator的xml配置文件
<?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:\Program Files\MAVEN\repMaven\mysql\mysql-connector-java\8.0.26/mysql-connector-java-8.0.26.jar" />
<context id="DB2Tables" targetRuntime="MyBatis3">
<!--注释的生成-->
<commentGenerator>
<property name="suppressAllComments" value="true" />
</commentGenerator>
<!--数据库连接信息-->
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/restrant?serverTimezone=Asia/Shanghai"
userId="root"
password="123456">
</jdbcConnection>
<javaTypeResolver >
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!--生成的实体类所在的包-->
<javaModelGenerator targetPackage="com.ghs.entity" targetProject="./src/main/java">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!--映射文件存在目录-->
<sqlMapGenerator targetPackage="mapper" targetProject="./src/main/resources">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!--dao接口所在的包-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.ghs.dao" targetProject="./src/main/java">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!--表
schema:表所在的数据库
tableName:表名
domainObjectName:实体类得名称
-->
<table schema="mybatis02" tableName="tbl_emp" domainObjectName="Emp"
enableDeleteByExample="false"
enableSelectByExample="false"
enableUpdateByExample="false"
enableCountByExample="false"/>
<table schema="mybatis02" tableName="tbl_dept" domainObjectName="Dept"
enableDeleteByExample="false"
enableSelectByExample="false"
enableUpdateByExample="false"
enableCountByExample="false"/>
</context>
</generatorConfiguration>
(3) 测试生成
public static void main(String[] args)throws Exception {
List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
File configFile = new File("generator-mybatis.xml");
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(configFile);
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
myBatisGenerator.generate(null);
}
10. 分页插件---PageHelper
(1)引入jar包(依赖)
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.1.11</version> </dependency>
(2)配置文件引入PageHelper的插件
11. mybatis一级【开启基于session】和二级缓存[关闭 基于mapper] 序列化