一、回顾知识
1、什么是框架?
拿我的生活的例子来说,框架就好比是一个等待装修的毛坯房
框架就像一个半成品的软件,等待开发人员进行二次开发1
框架的优点:
1、节省人力物力,节省资源
2、框架规范了开发者的代码,使得其代码可读性高 , 间接减少了我们后期开发的成本
2、什么是orm框架
首先了解到orm是什么意思1, 对象关系映射框架
作用是 将java对象数据与数据库数据进行一个映射管理
3、mybatis框架
是一个半自动的orm框架 , 与其中对应的是全自动的orm框架
这里的半自动和全自动说的 sql代码 是否可以自己编写
这里引申到了mybatis和hibernate的区别
第一点:谈及到自动化 , mybatis中sql语句可以编写 , hibernate中sql语句自己生成
第二点是上述谈及sql是否可以调优,mybatis可写sql
第三点是mybatis比hibernate更容易学习,但是比hibernate跟复杂
4、mybatis的写法
pom文件
mybatis的核心文件
mapper映射文件以及mapper接口文件
然后就是需要pojo类
5、mybatis工作流程
首先就是使用流去读取mybatis的核心文件
然后就去new一个sqlsessionfactorybuilder对象
紧接着使用构建者模式去build我们的mybatis的文件,返回给我们的sqlsessionfactory对象
然后进行工厂模式,sqlsessionfactory.opensession()返回我们sqlsession对象
这里有两条路线去操作数据库
第一条是sqlsession直接操作数据库
第二条是 sqlsession调用getmapper()方法 , 使用动态代理模式获取mapper对象 , 然后操作数据库
6、mapper动态代理
getmapper方法最终是调用jdk动态代理方法,生成一个代理对象,类型是传入的接口类型
Mapperprox类invoke()方法中,MapperMethod类调用了execute()方法,通过上述来创建代理方法,该方法的底层调用是sqlsession的方法
二、今日学习
1 、使用mybatis框架进行增删改查
2、#和$的区别:
-
#是sql模板的占位符 , $是将字符串拼接到sql模板
-
#可以防止sql注入,$不能
-
${}括号中必须是value
3、sql模板中like后面
1、在调用方法时候使用%% 2、使用字符拼接 %{value} 模糊查询如果不想在调用方法时参数加%,可以使用拼接参数的方式设置Sql:
3 使用#然后加上 bind 参数
4 mybatis多参数处理方法
一、自定义类传参
二、map传参
三、顺序传参 arg0 , param1开始 (可读性不高)
四 @Param 传参 MyBatis接口方法的参数前使用@Param 传参,定义映射文件中Sql语句的参数名
5、主鍵回填 mybatis
解决了插入数据不知道id的情况
使用用法 selectKey 标签中的属性有 ke'yProperty是java的属性 keyColumn是数据库列名 , resultType是主键的类型 order 执行之后
select LAST_ISERT_ID() 查询表中最后的一个id
必须要和<insert>标签连用
6、property属性
引入数据源
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/mybatis jdbc.username=root jdbc.password=root
7、别名(typealias)
<typeAliases> 一个配一个包的 <typeAlias type="com.wr.domain.User" alias="User"></typeAlias> 一个是配一个类的 <typeAlias type="com.wr.domain"></typeAlias> </typeAliases>