mybatis原来是apache下面的一个开源项目,名为ibatis, 2010年开发团队转移到谷歌旗下,改名为mybatis.
mybatis是一个优秀的数据持久层(dao层 /数据访问层/数据持久层)
mybatis是对jdbc进行封装,,避免了Jdbc中手动设置参数,手动映射结果的操作.
mybatis将jdbc中的接口进行封装,提供了它自己的类和接口实现.
mybatis可以使用xml配置和注解的方式,将数据库中记录自动映射到java对象中,是一种ORM实现(对象关系映射)将可以自动将数据映射到对象中的这种框架,也称为orm框架。
mybatis还提供了动态sql和数据缓存。
搭建补充:
1.在idea中安装MybatisX插件,
2.数据库连接池
链接数据库 每次访问数据库,创建一个connection,使用完后删除,但当访问量大了后,每次都要创建新的连接对象,用完关闭,比较耗时。
使用数据库连接池,在池(集合)中事先创建一些连接对象,用户访问时,就直接从池中获取一个链接对象,用完后不销毁,传回池中。这样减少了频繁创建和销毁连接对象。
#{}:是占位符,是采用预编译方式向sql传值,可以防止sql注入,如果我们往sql中传值,使用#{}。
${}:将内容直接拼接到sql语句中,一般不用于sql里传值,一般用于向sql中动态传递列名。加上''可以当做值使用。
区别:底层实现不同
#{} 采用预编译方式,防止sql的注入,更加安全。
${} 采用字符串拼接,直接将值拼接到sql中
使用场景:
#{} 一般用于向sql中的列传值
${}一般用于向sql动态传递列名 例如:排序时 order by 后面的列名是可以改变和select 后的列名也可以自由选择。
Mybatis项目的创建:
需要再idea里创建一个maven项目,在创建的maven项目里,在其中的pom.xml文件里导入
Mybatis 的jar包,以及MYSQL 的数据库驱动包,
在main文件中的java文件里创建出相应的项目文件,如dao包,model包,util包,以及测试的包;
同时在于java同级的resources文件夹里创建Mapper文件夹,还需要再resources文件夹里的mybatils.xml里进行该Mybatis项目的核心配置:
2.在此文件里可以对我们的类配置别名:
其中的typeAlias type 每次只能为一种模版类进行配置名称,如果模版类数量特别多,会导致,代码冗余,所以使用package 对整体的model进行配置,类型调用时,直接使用model文件包里的名称。
3.配置所要链接数据库的信息
如果当你在Mapper文件夹创建了,与模版类对应的mapper文件,最后还要在此文件里配置映射文件。
mapper文件就是sql映射文件,其主要的作用是写sql实现。
when关键字:
update teacher
num=#{num},
name=#{name},
gender=#{gender}
where id=#{id}
prefixOverrides 和 suffixOverrides 是在一些配置文件中用于控制字符串或标识符处理的选项,特别是在代码生成和数据库映射工具中。它们的区别在于:
prefixOverrides:
作用: 用于从字符串或标识符的开头删除指定的前缀。
例如果有一个列名 prefix_ColumnName
和 prefixOverrides
设置为 prefix_
,那么最终使用的标识符将是 ColumnName
。它会去除所有以 prefix_
开头的前缀。
suffixOverrides:
作用: 用于从字符串或标识符的结尾删除指定的后缀。
例如果有一个列名 ColumnName_suffix和 suffixOverrides
设置为‘_suffix,那么最终使用的标识符将是
ColumnName。它会去除所有以 _suffix
结尾的后缀。
prefixOverrides: 删除开头的指定前缀。
suffixOverrides: 删除结尾的指定后缀。
delete from teacher where id in
#{id}
方法一:直接多表关联查询出我们需要的信息
方式2:先查主表(学生表)
该方法是通过
动态sql语句。
数据缓存:
数据缓存,让数据离我们的执行程序更近,让程序能快速获取到数据。
例如:手机缓存,浏览器缓存 ... cpu缓存。