一、持久层的作用
主要用于与数据库进行交互,将sql通过连接发送给DB,然后从DB中获取到DATA,然后我们再将这个DATA封装到我们的JAVABEAN
二、得到连接池连接
Sqlsession session =sessionUntil.getsession();
三、标签
A.<insert></insert>标签主要用于语句新增,其中的id属性时一个标记,是一个表示在该位置文件内部的唯一标识,是必填项,其他属性可填可不填
Insert into table(column1,column2…….)values(values1,values2….)
其他属性:
ParameterType = “com.lovo.bean.UserBean”
useGeneratedKeys = true 用来获取数据库自增的ID(仅对insert有效)
keyProperty = user.id 主键
映射文件配置完毕后,需要在mybatis.cfg.xml配置文件中配置<mappers>标签
(1)<mapper src=“路径”/ >
(2)<package name=”mapper文件夹路径”>自动扫描
批量添加 insert into table (column1,column2….)values(),(),()
<foreach collection =”users” item=”user” 别名 separator=”,”>
(#{ },#{ },#{ })
</foreach>
Open=”(”在循环开始之间添加
Close=”)”在循环开始之后添加
B.<mapper namespace=”” src=“路径” >namespace命名空间,就相当于程序中的包
1.用于分类
2.保证命名空间内部文件都是唯一的
C.在mybatis中取值方式有两种
1.#{对象的属性}
通过@param(“user”)取别名,给用户对象取小名#{user.name},#{user.sex}.....
2.${对象的属性}
上述两种方法都可以用来取值,但是有所区别,#{ }取值后,会在值得两侧自动添加“”,${ }取值后,不会再值的两侧添加引号,通常用于数值或者order by ,group by之后的语句;另外一个区别,#{ }在编译的时候采用预编译(preparestatement),${ }在编译的时候是采用的Statement
D. private UserMapper um;
Um =session.getMapper(UserMapper.class)从session实例中获取userMapper该接口的实现类的实例
Int ret = 0;用来记录数据库中受影响的行数
ret = um.saveUerBean(user);
session.commit()事务提交
session.rollback()事务回滚
session.close()关闭session,不代表关闭连接,连接会回到连接池中
E.<typeAliases>给类取类的别名
<typeAlias type=”” alas=”userBean”>
<package name =”bean包”>将类的类名来作为类的别名
F.<update>
Update table set column =value…..where id =‘ ‘ ;
G.<select resultMap=”userMap”>返回结果集
<resultMap type=””>
<resultType>和<resultMap>功能一样,但是其中的列的名字字段要和JAVABEAN中相同,两者不能同时使用
<id proprety = “id” column =”id”javaType =”java.lang.Long”>
只有id属性才能用这个标签,其他属性用<result>标签
H.<delete>
Delete from table where 条件
批量删除 in(范围)
I.CONCAT(‘%’,’#{name}’,’%’)字符串拼接
J.DESC索引:缩小查询范围来提高查询效率
ALTER TABLE t_user ADD INDEXin_name(username)
SHOW INDEX From t_user查看索引
K.多参数查询(参数个数大于两个)
解决方案有两种,第一种,将多参数封装成对象
第二种,将多参数添加到MAP中
MAP中的取值方式依旧采用#或者$,但是我妈在取值的时候通过key取value
四、测试框架Junit
可以脱离src,建立sourceFolder原代码目录
(1)Public void before();@Before 测试之前需要执行的代码,测试之前的准备工作
Public void test();@Test 必须项,可以同时测试多个方法
Public void after();@After 测试之后需要执行的代码,测试之后的收尾工作
(2)@注解等同于配置,例如@webServlet(urlPatterns =(“”))提高开发效率
约定优于配置,约定指的是接口,优于指的是开发效率上的优于
(3)每执行一次test方法都会执行一次before和after方法
(4)@ignore 忽略,可以忽略这个方法
(5)如果实际结果,满足我们的语气的情况下,那么就表示成功了
Assert断言类,用于比对预期和实际,如果断言成功,代码继续运行,如果不成功,代码被阻断运行
Assert.assertnotequals断言不相等
Assert.assertequals断言相等
Assert.assertTrue(String message,boolean)断言真,message可以自定义