mybaits是apache出的,后来代码迁移到谷歌code,迁移前叫ibaits。
如果直接使用jdbc会出现一些问题,所以采用封装的形式。资源频繁开启和关闭,语句和插入参数都是使用了硬编码,不利于维护。
在使用mysql的时候字符集要选择utf-8,不选会乱码。mysql使用的软件是navicat premium
mybaits有数据源,缓存的开关,延迟加载的开关,默认关闭,不好用,用ri什么的,分布式缓存。
pojo:不按mvc分层,只是java bean有一些属性,还有get set方法
domain:不按mvc分层,只是java bean有一些属性,还有get set方法
po:用在持久层,还可以再增加或者修改的时候,从页面直接传入action中,它里面的java bean 类名等于表名,
属性名等于表的字段名,还有对应的get set方法
vo: view object表现层对象,主要用于在高级查询中从页面接收传过来的各种参数.好处是扩展性强
bo: 用在servie层,现在企业基本不用.
这些po,vo, bo,pojo可以用在各种层面吗
可以,也就是po用在表现层,vo用在持久层不报错,因为都是普通的java bean没有语法错误.
但是在企业最好不要混着用,因为这些都是设计的原则,混着用比较乱.不利于代码维护.
自学方法论: 理论 -> 实践 -> 理论 -> 实践 反复迭代三遍
框架原理不清晰,
mybaits的代码由github.com管理,地址:https://github.com/mybatis/mybatis-3/releases
后期在做crm项目的的时候会学习新的一个连接池,德鲁伊连接池。
使用mybatis需要导包,创建核心配置在src目录下,这里注意是src目录下,在创建bean类,用来接收返回对象,在bean类下创建语句的映射文件,最后记得,在核心配置文件种,要加入映射文件的路径。
selectOne是用来接收返回值是单个的,selectList用来接收返回值是多个的。
参数基本类型,返回值一个。
这里使用拼接符会有sql注入的危险,只有在使用like这样的语句才使用拼接,如果前面是‘=’号,建议不要使用拼接符。参数基本类型,返回值集合。
参数bean类,返回值自增的id。
mysql有自增的字符串uuid。查询uuid要在语句前执行。普通的自增id,要在语句后执行,如果只要单纯的添加,添加进javabean就可以。另外注意的是查询要关闭close,不关闭会有缓存,那么如果是增删改就必须要close。参数基本类型,删除语句
参数bean对象,修改数据
原生Dao的实现
和原生的jdbc一样,有实现类,有工具类,封装了一些属性。动态代理Dao的实现
和原生jdbc最大的差别就是没有了实现类,通过映射,但是也需要遵循一些规则,比如namespace的名字要是接口全名,name的名字要是方法名字,参数和返回的参数类型都要有,还有就是在核心的配置文件要加上包名加名字,不要后缀。配置文件
为了应对企业多文件需要改动映射等配置,不能像上面的那样,一个个配置,所以可以通过更改下配置,让原本繁琐的变得简单点。首先是一些别名的说明,比如在输入参数的时候输入int有时候会写java.lang.integer那么其实可以简便写,以下列出
当然除了一些基本参数的别名,那么bean类的别名,也有相对应的设置方法。在核心文件文件里配置
以上有定义单个,和包一起定义的,包定义的别名就是类名,这里的类名不区分大小写,感觉是个bug,会出事,java是严格区分大小写的,这是很不好的,只能自己规定输入的了。
还有在配置文件中,配置映射实现动态代理,那么规则就是名字要要相同,只是配置一直改动,有3种改动方式,第3种用的最多。
最后是配置文件的加载,我们也要配置一些数据库的参数放在另外个文本。
这里通过配置来加载数据库信息,加个语句
最后需要说明的是,此次主要说了增删改差,还有一些语句需要扩张,比如返回的是boolean值也需要自己扩张,另外mybatis有缓存,但是不开启因为不好用,后面会学习分布式缓存,还有就是也有延迟的定义属性,如果有用到,可以自行学习。