今天学习的主要内容为mybatis,个人感觉像jdbc的进化版,接下来我将从搭建Mybatis框架,mybatis核心配置文件,获取参数值各种情况这三个方面来讲述我今天的学习内容:
1.搭建mybatis框架
搭建一个mybatis框架,要从以下几个方面入手:
1.1首先,创建一个maven项目,在pom.xml文件总声明需要的依赖,如图
为基本依赖
1.2编写mybatis框架的核心配置文件,这个与2一起讲解
1.3创建实体类和mapper接口
作为一个持久层的框架,这个是肯定要创建的
这是mapper接口
这是实体类
1.4创建sql映射文件
定义与用户操作相关的SQL映射文件,该文件是一个XML文件。SQL映射文件一般与相关的Mapper接口配合使用,属于DAO组件,且针对特定的实体类,所以其命名规则与Mapper接口相同,为“实体类名”+Mapper,且通常与Mapper接口放在同一个包下。
原文链接:https://blog.csdn.net/qq_46540738/article/details/114442438
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.mybatisdemo1.mapper.StudentMapper"> <!-- int insertUser();--> <insert id="insertstudent"> insert into student_zkr values (8,20210008,'李怜彩','15','男',1,0,1,null,null) </insert> </mapper>
1.5编写测试类
补充:把OpenSession的值设置为true则自动提交事务,如果值为空则不会提交事务
2.mybatis核心配置文件
习惯上命名为mybatis-config.xml,这个文件名仅仅为建议,并非强制要求,将来整合spring的时候,这个配置文件可以省略,所以大家操作时可以直接复制,粘贴
核心配置文件主要用于配置连接数据库的环境以及mybatis的全局配置信息
核心配置文件存放的位置是src/mian/resources目录下
模板如下:
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEconfiguration
PUBLIC"-//mybatis.org//DTDConfig3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--数据库环境配置-->
<environmentsdefault="development">
<environmentid="development">
<transactionManagertype="JDBC"/>
<dataSourcetype="POOLED">
<!--设置数据库连接信息-->
<propertyname="driver"value="数据库驱动类名称"/>
<propertyname="url"value="数据库连接URL"/>
<propertyname="username"value="数据库用户名"/>
<propertyname="password"value="数据库密码"/>
</dataSource>
</environment>
</environments>
<!--Mapper文件配置-->
<mappers>
<!--注册Mapper接口-->
<mapperresource="com/example/mapper/ExampleMapper.xml"/>
</mappers>
<!--其他配置项-->
</configuration>
2.1mybatis中的mapper接口相当于以前的dao,但是区别在于,mapper仅仅是接口,我们不需要提供实现类
2.2创建MyBatis的映射文件
相关概念:ORM对象关系映射
*对象:java的实体类对象
*关系:关系型数据库
*映射:二者之间的对应关系
java概念 数据库概念
类 表
属性 字段/列
对象 记录/行
2.3映射文件的命名规则:
表锁所对应的实体类的类名+mapper.xml
例如:表t_user,映射的实体类为user,所对应的映射文件为UserMapper.xml
因此一个映射文件对应一个实体类,对应一张表读操作
mybatis映射文件用于编写sql,访问以及操作表中的数据
mybatis中可以面向接口操作数据,要保证两个一致:
a>mapper接口的全类名和映射文件的命名空间(username)保持一致
b>mapper接口中方法的方法名和映射文件中编写sql的标签的id属性保持一致
2.4在sql的映射文件中,查询功能必须设置resultType,不然系统不知道它的返回值!
2.5environments标签
用来配置多个连接数据库的环境,比如一个用来开发,一个用来测试,使用参数id来决定,default参数设置默认的模式
2.6properties文件
没什么好说的
2.7typeAliases类型别名的功能,用来应对查询功能的type全类名过长的问题
以后最常用的方式
2.8核心配置文件mappers:
1.mapper接口所在的包要和映射文件所在的包一致
2.mapper接口要和映射文件的名字一致
3.获取参数值的各种情况
之前的案例里写的是完整的sql语句,这样肯定不行的,所以要把参数写在测试方法里
3.1第一种情况:单个字面量类型的参数
3.2多个字面变量类型
报错了
在mynatis底层,如果检测到mapper接口中方法有多个参数的话,它会自动把参数放在一个map集合里,它以arg1,arg0或者param1,param2为键,参数为值存储,所以改成以下这种
3.3第三种情况:传入map集合
通过自己的方式访问到相对应的键
3.4第四种情况,mappeer接口方法的参数是实体类类型的参数
mapper接口方法的参数是实体类类型的参数
只需要通过# {}和${}以属性的方式访问属性值即可,但是需要注意${}的单引号问题
3.5第五种情况:使用@param注解的参数
以@param中的值为键,以变量的值为值