快速搭建Mybatis框架
来源:互联网 发布:易语言键盘记录源码 编辑:程序博客网 时间:2024/06/04 23:29
搭建Mybatis框架
1、创建工程
我创建的是一个web工程,貌似也可以创建为java工程,目录结构如下:
2、创建实体类
创建实体类:TbTeacher(属性名与数据库表中的列名一致)
创建实体类:TbStudent(属性名与数据库表中的列名不一致)
创建工具类:OrderBy(用于sql语句中排序)
3、创建mapper.xml和mapper.java
创建各个实体类的mapper.xml(Sql映射文件)和mapper.java(接口文件)
说明:mapper.xml里面配置了执行各种功能的sql语句,并为每个sql语句起了一个id;
mapper.java接口文件相当于dao接口,里面只有方法;
二者的联系:
其实mapper.xml映射文件文件相当于mapper.java接口文件的实现类,不过需要满足以下两个条件:
1.mapper.xml映射文件中有一个namespace的标签,该标签需要映射到对应的mapper.java接口文件下,相当于将mapper.xml与mapper.java关联;
2.mapper.java接口文件中,每个方法的方法名,需要与mapper.xml中对应功能sql的Id一致,这样,Mybatis会自动根据sql对应的id去实现对应的方法;
创建TeacherMapper.java接口文件(因为Teacher类的属性名与列名一直,所以只简单举一个例子)
创建Teachermapper.xml映射文件
创建StudentMapper.java接口文件
创建StudentMapper.xml映射文件(属性名与列名不一致,所以mapper.xml文件中需要先使用resultMap做属性名与列名的映射,并且每个sql操作的返回值不能使用resultType,需要使用resultMap)
强调一下:只有在配置mapper.xml映射文件时,采用的是“/”来表示切换到子文件夹中
4、创建Test类
详解mapper.xml映射文件中的foreach标签:
1、item表示集合中每一个元素进行迭代时的别名,
2、index指定一个名字,用于表示在迭代过程中,每次迭代到的位置,
3、open表示该语句以什么开始,
4、separator表示在每次进行迭代之间以什么符号作为分隔符,
5、close表示以什么结束,
6、collection属性,该属性是必须指定的,但是在不同情况下,该属性的值是不一样的:
a、如果传入的是单参数且参数类型是一个List的时候,collection属性值为list .
b、如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array .
当需要传入一个List,还需要传入一个其他类型的对象时,需要用map,如测试类的 多个参数 3
不难发现,在list_in2对应的sql语句中的foreach循环中,collection对应的“testArray”是封装在map中集合对应的key值,而#{teacher}中的teacher也是map中的key值。
所以可以得到结论:在传入单个list时,Mybatis是将list集合和array数组封装到了map集合中,并设置了对应的key值
mapper.xml文件中,#和$的区别
区别:
1、使用#入参,myBatis会生成PrepareStatement(预编译)并且可以安全地设置参数(=?)的值。因为sql语句已经预编译好了,传入参数的时候,不会重新生产sql语句。安全性高。
2、用$使用的是非预编译的形式,会有sql注入的问题:
例如,select * from emp where ename = '用户名',如果使用$入参,用户名被传入例如‘smith or 1 = 1’,那无论ename是否匹配都能查到结果。
3、在特定场景下,例如如果在动态排序时,这时候就可以使用$.
使用$的特定场景:
1.动态获取表名;
2.动态排序——order by
详见Test类中的排序例;
通过注解形式实现简单的增删改
1、去除mapper.xml映射文件
2、sqlMapperConfig配置文件有改动
因为不需要配置mapper.xml映射文件,所以SqlMapConfig中不用在<mapper>标签中映射各种mapper.xml文件;
但又因为mapper.xml文件的不存在,没有办法像之前那样通过namespace来映射mapper.java文件,所以这个需要在SqlMapConfig中加载mapper.java接口文件:
3、mapper.java文件有改动
Test时直接调用add方法即可
- 快速搭建Mybatis框架
- 快速搭建SSM框架WEB项目 Spring+SpringMVC+Mybatis+MySQL
- 基于springmvc+mybatis搭建的J2EE快速开发框架
- springmvc+mybatis搭建的J2EE快速开发框架
- maven配合MyBatis-CMEU快速搭建ssm框架
- 快速搭建mybatis
- springMVC+mybatis框架搭建
- springMVC+mybatis框架搭建
- 搭建MyBatis框架
- spring+mybatis 框架搭建
- Mybatis框架搭建
- 搭建MyBatis框架
- 实践---搭建mybatis框架
- Spring+MyBatis框架搭建
- mybatis框架搭建步骤:
- spring-mybatis框架搭建
- 如何搭建mybatis框架
- spring+mybatis框架搭建
- angular js 过滤器的使用及思路总结
- 工具类——自定义Collections集合方法
- 开发环境搭建--Ubunut下JDK安装
- S5PV210 系列(裸机八)之 时钟系统
- viewport详解
- 快速搭建Mybatis框架
- MyBatis Generator错误总结
- scanf中最好不要加 "\n"
- android-priority-jobqueue-2.0.1隐藏BUG
- hibernate项目实践
- spring controller可以获取的类型
- 七牛云 播放的时候显示错误信息:视频解析异常 请重试
- git 学习
- 设备可在IOS10蓝牙设置里被搜索到