Mybatis入门.docx
《Mybatis入门.docx》由会员分享,可在线阅读,更多相关《Mybatis入门.docx(8页珍藏版)》请在冰豆网上搜索。
Mybatis入门
Mybatis入门
1.框架介绍
2.Mybatis介绍
3.Mybatis环境安装
下载需要的包如下图:
下载mysql的驱动包:
mysql-connector-java-5.1.26-bin.jar。
1.
2.
3.
3.1.开发步骤
Ø新建一个javaproject(非webprojcect)。
Ø把mybatis和mysql的jar包导入到自己的project里。
Ø建立dao包和bean包
Ø在java里根据数据库中的表撰写javabean。
放在bean包里,最好建的javabean是业务名+Bean名称,如:
StudentInfoBean。
Ø在src下建立conf文件夹,存放所有的配置文件和映射文件,便于管理。
(这是根据个人偏好)
Ø在自己的project里编写代码实现数据crud
3.2.Java代码实现顺序
这三行代码顺序如上,是必须的,也可以写成一个公共方法来处理类似的需求。
4.基于映射文件的curd
ØSqlSession调用的方法:
update,selectList,insert,delete里第一个参数是映射文件的命名空间+标签的ID。
Ø如果Javabean中的属性名和数据库中字段名不一值,要使用resultMap标签,如下图:
此时,在select标签中不能用resultType属性,要用到resultMap属性,其属性值就是resultMap标签的id值。
在select标签中,resultType和resultMap两属性不能共存。
5.基于接口的curd
接口的开发规范如下:
Ø声明接口,接口中声明方法。
Ømapper.xml中的命名空间等于Mapper接口类的全路径;
Ømapper.java中的方法名和mapper.xml中的sql标签的id一致;
Ømapper接口中方法的输入参数类型和mapper.xml中的ParameterType一致;
Ømapper接口中的方法的返回值类型和mapper.xml中的ResultType一致。
Ø在程序中实例化接口。
IMappermap=session.getMapper(IMapper.class);然后使用map调用接口方法,如图:
标红行是通过框架的反射技术实例化接口。
6.基于注解的curd
声明接口,在接口中声明curd的方法,在注解中编写sql语句,如图:
Ø如果声明的方法只有一个参数就不需注解
Ø如果声明的方法需要二个参数以上,在每个参数前给出注解@Param,注解中的名称和sql语句中花括号中名称一样。
Ø如果javabean中的属性名和数据库字段名不一样,就要用到@Results和@Result两个注解,形式如上图(注释p;部分)
Ø程序中不同的地方如下图:
上图中标注红色的两行尤其重要,因为没有映射文件,sql语法不能通过映射文件加载内存里。
所以通过标红第一行方式把接口类加载进来,从而sql语法也加载进来了。
标红第二行实例化接口,好调用接口中声明的方法。
7.关联关系查询
Ø一对一查询:
在主Javabean中定义另外一个Javabean的属性,如图:
标红行的属性类别是另外一个Javabean
在映射文件中用到association关键标签,它是resultMap的子标签,如图:
被红线包住的内容,就是被引用的Javabean里定义的属性。
Association也可以实现多对一。
Ø一对多:
在主Javabean中定义一个List集合,其泛型类是另外一个Javabean.如图:
标红行就是“多“的Javabean.在映射文件中用到关键标签collections,如图:
被红线包住的内容就是“多“的javabean在映射文件中定义
8.动态sql
8.1.Foreach标签
该标签是解决sql语法select*from表where字段名in(值1,值2,值3…)的动态sql。
它有六个属性,定义如下:
Øcollection:
要循环的集合
Øindex:
循环索引
Øitem:
集合中的一个元素(item和collection,按foreach循环理解)
Øopen:
以什么开始
Øclose:
以什么结束
Øseparator:
循环内容之间以什么分隔
in括号中的值有三种形式定义:
ØList传值如图:
如果传入参数为List,配置属性collection值固定为list
ØArray传值如图:
如果是以数组传值,属性collection的值固定写成array.
ØMap传值如图:
如果以Map传值,则collection的值为程序中map中的key。
对应的Java代码如图:
8.2.Where标签
略
8.3.Set标签
略
8.4.Trim标签
略
8.5.Choose标签
略
9.缓存说明
Mybatis有两级缓存来缓存结果集和。
附件:
提供的映射文件说明:
Mapper1.xml:
基于映射文件开发的配置
Mapper2.xml:
基于接口开发的配置
Mapper3.xml:
针对关联关系(一对一,一对多的)开发的配置
Mapper4.xml:
基于动态sql的配置
建表语句:
Ø学生信息表Student_info:
CREATETABLE`student_info`(
`s_id`INTEGER(11)NOTNULL,
`s_name`VARCHAR(20)COLLATEutf8_general_ciDEFAULTNULL,
`s_age`INTEGER(11)DEFAULTNULL,
`s_province`VARCHAR(20)COLLATEutf8_general_ciDEFAULTNULL,
`s_sex`VARCHAR(20)COLLATEutf8_general_ciDEFAULTNULL,
PRIMARYKEY(`s_id`)USINGBTREE
)ENGINE=MyISAM
CHARACTERSET'utf8'COLLATE'utf8_general_ci'
;
Ø学生分数表student_score:
CREATETABLE`student_score`(
`score_id`INTEGER(11)NOTNULLAUTO_INCREMENT,
`s_id`INTEGER(11)DEFAULTNULL,
`subject`VARCHAR(20)COLLATEutf8_general_ciDEFAULTNULL,
`score`INTEGER(11)DEFAULTNULL,
`level`VARCHAR(20)COLLATEutf8_general_ciNOTNULL,
PRIMARYKEY(`score_id`)USINGBTREE,
UNIQUEKEY`score_id`(`score_id`)USINGBTREE
)ENGINE=MyISAM
AUTO_INCREMENT=9CHARACTERSET'utf8'COLLATE'utf8_general_ci'
Ø学生证信息表Student_card:
CREATETABLE`student_score`(
`score_id`INTEGER(11)NOTNULLAUTO_INCREMENT,
`s_id`INTEGER(11)DEFAULTNULL,
`subject`VARCHAR(20)COLLATEutf8_general_ciDEFAULTNULL,
`score`INTEGER(11)DEFAULTNULL,
`level`VARCHAR(20)COLLATEutf8_general_ciNOTNULL,
PRIMARYKEY(`score_id`)USINGBTREE,
UNIQUEKEY`score_id`(`score_id`)USINGBTREE
)ENGINE=MyISAM
AUTO_INCREMENT=9CHARACTERSET'utf8'COLLATE'utf8_general_ci'
;