MyBatis(二)

来源:互联网 发布:淘宝直通车如何竞价 编辑:程序博客网 时间:2024/04/28 23:04

一、持久层的作用

主要用于与数据库进行交互,将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 tablecolumn1column2….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 bygroup 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中的取值方式依旧采用#或者$,但是我妈在取值的时候通过keyvalue

四、测试框架Junit

可以脱离src,建立sourceFolder原代码目录

1Public void before();@Before测试之前需要执行的代码,测试之前的准备工作

Public void test();@Test必须项,可以同时测试多个方法

Public void after();@After测试之后需要执行的代码,测试之后的收尾工作

2@注解等同于配置,例如@webServleturlPatterns =(“”))提高开发效率

约定优于配置,约定指的是接口,优于指的是开发效率上的优于

3)每执行一次test方法都会执行一次beforeafter方法

4@ignore忽略,可以忽略这个方法

5)如果实际结果,满足我们的语气的情况下,那么就表示成功了

Assert断言类,用于比对预期和实际,如果断言成功,代码继续运行,如果不成功,代码被阻断运行

Assert.assertnotequals断言不相等

Assert.assertequals断言相等

Assert.assertTrue(String message,boolean)断言真,message可以自定义

0 0
原创粉丝点击