MyBatis
2021-05-31 08:46:59 1 举报
AI智能生成
登录查看完整内容
mybatis
作者其他创作
大纲/内容
MyBatis
三层架构
界面层:
对应的包:controller(servlet)
对应的框架:springMVC(框架)
业务逻辑层:
接受了界面层接受的数据,计算逻辑,调用数据库,获取数据
对应的包:service包(XXXservice类)
对应的框架:spring(框架)
数据访问层:
就是访问数据库,执行对数据查询,修改,删除等等。
对应的包:DAO包(XXXDAO类)
对应的框架:mybatis(框架)
mybatis实战
作用:增强的jdbc,访问数据库,执行增删改查
基本步骤
1、加入maven的依赖
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.3</version> </dependency>
2、创建Dao接口:定义了你操作数据的方法
3、创建mapper文件,也叫sql映射文件:写sql语句的,和接口中方法对应的sql语句
4、创建mybatis的一个主配置文件:1)连接数据库:2)指定mapper文件的位置
5、使用mybatis的对象Sqlsession,通过他的方法执行sql语句
使用mybatis的动态代理
什么是动态代理:mybatis帮忙创建dao接口实现类,在实现类中调用sqlsession的方法执行sql语句
使用动态代理方式:
1、获取SqlSession对象,SQLSessionFactory.openSession()
2、使用getMapper方法获取某个接口的对象,SQLSession。getMapper(接口.class)
3、使用dao接口的 方法,调用方法就执行mapper文件中的sql语句了
使用动态代理的方式的要求:
1、dao接口和Mapper文件放在同一个目录
2、dao接口和mapper文件的名称一致
3、mapper文件中的namespace的值是dao接口的全限定名称
5、dao接口中不要使用重载方法
理解参数
从java代码中把实际的值传入到mapper中
1、一个简单的参数:#{任意字符}
2、多个简单类型的参数:@Param(" 自定义名称")
3、使用一个java对象,对象的属性值作为mapper文件找到参数。#{java对象的属性名称}
5、使用map的作为参数,#{map的key}
#和$的区别
1、#是占位符,表示列值得,放在等号右侧
2、$也是占位符,用来表示字符串连接的,吧sql语句连接成一个字符串
3、#占位符使用的jdbc指定PreparedStatement对象执行sql语句,效率高,没哟sql注入的风险
4、$使用的是Statement对象来执行sql,效率低,有sql注入的风险
mybatis返回结果
resultType
表示sql语句的执行结果转为的java对象类型
1、类型的全限定名称
2、别名
在mybatis主配置文件定义别名
1、使用<TypeAiles>
2、使用<package name="包名"/> 类名就是别名
resultMap
自定义列名和java 对象的属性名对应关系
列名和属性名不一样解决方式
1、使用列名
2、使用resultMap
Map
1、在java的代码中来指定like的内容
2、在mapper中拼接like
动态sql
根据一些条件得到不同的sql语句,使用mybatis的标签,例如 if where foreach等
if : 判断条件的,条件为true,就会把if之间的sql加入到主sql之后
where:<where>标签里面是多个if,如果有一个if判断为true,会在sql的后面加入一个where关键字,会去掉无用的and,or等字符
foreach:循环数组,list集合。
colllection 表示 接口中方法循环的参数类型 item 表示数组和集合的变量 open 循环开始的字符 close 循环结束的字符 separator 集合成员之间插入分隔符 <foreach collection=" " item=" " open=" " close=" " separator=" "> #{xxx} </foreach>
sql代码片段:复用部分sql语句的
mybatis主配置文件
1、数据库属性配置文件的使用
1)在resources目录中定义一个属性配置文件,xxxx.properties文件,在属性文件中,定义数据,格式是key和value
2)、key一般使用多级目录
3)在mysql主配置文件中,使用<property>指定properties文件的位置,从类路径根目录开始找文件,在需要的地方使用${key}
2、mapper文件的位置
<!--第二种方式:使用包名 name:xml文件(mapper文件)所在的包名,完整路径。 意思:所有包中的所有的xml文件一次都加载给mybatis 要求: 1、mapper文件名称,需要和接口名称一样,区分大小写的一样 2、mapper文件需要和接口在同一目录<package name="com.xinxian.dao"/>
pageHelper分页
功能:实现多种数据库的分页,mysql就是代替里面的limit语句的
使用步骤:
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.2.0</version> </dependency>
2、在mybatis主配置文件,加入plugin
<plugins> <plugin interceptor="com.github.pagehelper.PageInterceptor"/> </plugins>
3、在查询之前,加入pageHelper的调用
加入PageHelper的方法,分页
pageNum:第几页,开始
pageSize页面中有多少行数据
三层中类的交互 :用户使用界面层---->业务逻辑层---->数据访问层(持久层)---->数据库(mysql)
0 条评论
回复 删除
下一页