MyBatis
2023-11-11 16:04:06 0 举报
AI智能生成
Mybatis笔记
作者其他创作
大纲/内容
Mybatis解
namespace
namespace中的包名要和Dao/Mapper接口的包名一致
id:就是对应的namespace中的方法名
resultType : Sql语句执行的返回值
parameterType : 参数类型
resultType与resultMap
resultType:直接表示返回类型,包括基本数据类型和复杂数据类型。
resultMap:应用场景一般是:数据库字段信息与对象属性不一致或者需要做复杂的联合查询,以便自由控制映射结构。
三层框架
界面层: controller包 (servlet)
界面层: 和用户打交道的, 接收用户的请求参数, 显示处理结果的。(jsp ,html ,servlet)
业务逻辑层: service 包(XXXService类)
业务逻辑层: 接收了界面层传递的数据,计算逻辑,调用数据库,获取数据
数据访问层: dao包(XXXDao类)
数据访问层: 就是访问数据库, 执行对数据的查询,修改,删除等等的。
什么是数据持久化:将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称。
#{}和${}的区别
#{}是占位符,预编译处理;${}是拼接符,字符串替换,没有预编译处理。
Mybatis在处理#{}时,#{}传入参数是以字符串传入,会将SQL中的#{}替换为?号,调用
PreparedStatement的set方法来赋值。
#{} 可以有效的防止SQL注入提高系统安全性 。后者不能防止SQL 注入#{} 的变量替换是在DBMS 中;${} 的变量替换是在 DBMS 外.
掌握MyBatis缓存
一级缓存:是mybatis自带的本地缓存,作用范围为session的区域,当session flush或者close之后,该session中所有的cache就会被清空;
二级缓存:全局缓存,她超出了session范围,可以被所有的SQLSession共享,开启它只需要mybatis的核心配置文件(mybatis-config.xml)的setting中设置即可;
Mybatis的安装与配置
Maven依赖导入pom.xml
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
</dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
</dependencies>
其余依赖导入
Alibaba Druid数据库连接池导入
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.16</version>
</dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.16</version>
</dependency>
Junit依赖导入(测试)
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
Lombok(自动生成setget/有参无参构造/tostring)
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.28</version>
</dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.28</version>
</dependency>
javalog日志
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
Mysql数据库连接
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
Mybatis介绍
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。
Mybatis配置文件
mybatis-config.xml(放置在resource目录下)
<?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"></properties>
<!--配置连接数据库的环境(environments)-->
<environments default="development"><!--default(默认) development(开发)-->
<!--可以配置多个environment-->
<environment id="development">
<!--
这里的transactionManager表示MyBatis使用的是事务管理器是原始的JDBC方式
所以事务的开启,提交与回滚都需要手动处理
-->
<transactionManager type="JDBC"/>
<!--数据源,type="POOLED"表示使用的是连接池-->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.user}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!--引入映射文件-->
<mappers>
<mapper resource="com/java2303/mapper/UserMapper.xml"/>
</mappers>
</configuration>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="db.properties"></properties>
<!--配置连接数据库的环境(environments)-->
<environments default="development"><!--default(默认) development(开发)-->
<!--可以配置多个environment-->
<environment id="development">
<!--
这里的transactionManager表示MyBatis使用的是事务管理器是原始的JDBC方式
所以事务的开启,提交与回滚都需要手动处理
-->
<transactionManager type="JDBC"/>
<!--数据源,type="POOLED"表示使用的是连接池-->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.user}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!--引入映射文件-->
<mappers>
<mapper resource="com/java2303/mapper/UserMapper.xml"/>
</mappers>
</configuration>
使用MyBatis的mapper接口调用时有哪些要求?
1.Mapper接口方法名和mapper.xml中定义的每个sql的id相同。
2.Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的类型相 同。
3.Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同。
4.Mapper.xml文件中的namespace即是mapper接口的类路径。
0 条评论
下一页