Mybatis
2021-09-08 16:30:11 139 举报
AI智能生成
Mybatis学习
作者其他创作
大纲/内容
作用
增强的jdbc,访问数据库,执行crud
基本步骤
1.加入maven依赖
2.创建Dao接口:定义了操作数据库的方法
3.创建mapper文件,也叫sql映射文件:写sql语句的,和接口方法对应的sql语句
4.创建mybatis的主配置文件:1)连接数据库 2)指定mapper文件的位置(target/classes下)
5.使用Mybatis的对象 SqlSession执行sql语句
使用mybatis的动态代理
动态代理:mybatis自动创建dao接口的实现类,在实现类中调用SqlSession执行sql语句
使用动态代理的方式
1.获取SqlSession对象,SqlSessionFactory.openSession()
2.使用sqlSession.getMapper(接口.class)方法获取某个接口的对象
3.使用Dao接口的方法,调用方法就执行了mapper文件中sql语句
使用动态代理方式的要求
1.Dao接口和mapper文件放在一起,同一个目录
2.Dao接口和mapper文件名称一致
3.mapper文件中的namespace的值是dao接口的全限定名称
4.mapper文件中的<select>,<insert><update><delete>等的id是接口的方法名称
5.Dao接口中不要使用重载方法,不要使用同名的,不同参数的方法
理解传参
从java代码把实际的值传入到mapper中
1.一个简单类型的参数:#{任意字符}
2.多个简单类型的参数:使用@Param("自定义名称")
3.使用一个java对象,对象的属性值作为mapper文件找到参数,#{java对象的属性名}
4.使用参数的位置,语法#{arg0},#{arg1}
5.使用Map作为参数,#{map的key}
#和$的区别
1.#是占位符,表示列值的,放在等号右侧
2.$也是占位符,表示字符串的连接,把sql语句连接成一个字符串
3.#占位符使用的jdbc指定PrepareStatement对象执行sql语句,效率高,没有sql注入的风险
4.$使用的是Statement执行sql,效率低,有sql注入的风险
mybatis返回结果
resultType
表示sql语句的执行结果,转为java对象的类型
1.实体类对象类型的全限定名称
2.别名,在mybatis主配置文件定义别名
1.使用<typeAlias>
2.使用<package name="包名" />,类名就是别名
resultMap
自定义列名和java实体类对象的属性名对应关系
列名和属性名不一致的解决的方式
使用列名as 别名
使用resultMap
like
在java代码中指定like的内容 ,例如%张%
在mapper文件中拼接like
mybatis动态sql
根据条件,能够得到不同的sql语句,使用mybatis的标签,例如 if,where,foreach等
if:判断条件,条件为true,会把if之间的sql加入到主sql之后
where:<where>标签里面是多个if,如果有一个if判断为true,会在sql的后面加入where关键字,会去掉无用的and,or等字符
foreach:循环数组,list集合
<!--
foreach第一种使用方式
collection:表示接口方法参数的类型,如果是数组使用array,如果是list集合使用list
item:自定义,表示数组或者集合成员的变量
open:循环开始时的字符
close:循环结束时的字符
separator:成员之间的分隔符
-->
foreach第一种使用方式
collection:表示接口方法参数的类型,如果是数组使用array,如果是list集合使用list
item:自定义,表示数组或者集合成员的变量
open:循环开始时的字符
close:循环结束时的字符
separator:成员之间的分隔符
-->
sql代码片段:复用部分sql语句
mybatis主配置文件
1.数据库属性配置文件的使用
1.在resources目录中定义一个属性配置文件,xxx.properties,例如 jdbc.properties。在属性配置文件中,定义数据,格式是 key=value
key一般使用.做多级目录。例如 jdbc.mysql.driver
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql//...
jdbc.username=root
jdbc.password=123456
key一般使用.做多级目录。例如 jdbc.mysql.driver
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql//...
jdbc.username=root
jdbc.password=123456
2.在mybatis的主配置文件中使用<property>指定文件的位置。在需要使用的值的地方,${key}
2.mapper文件的位置
<!--第一种方式:指定多个mapper文件-->
<mapper resource="com/there/dao/UserDao.xml"/>
<mapper resource="com/there/dao/UserDao.xml"/>
<mapper resource="com/there/dao/UserDao.xml"/>
<mapper resource="com/there/dao/UserDao.xml"/>
<!--
第二种方式:使用包名 name:xml文件(mapper文件所在的包名),这个包中所有的xml文件一次性都能加载到mybatis
使用package的要求:
1.mapper文件名称要和接口名称一样,区分大小写
2.mapper文件和dao接口需要在同一目录
-->
<package name="com.there.dao"/>
第二种方式:使用包名 name:xml文件(mapper文件所在的包名),这个包中所有的xml文件一次性都能加载到mybatis
使用package的要求:
1.mapper文件名称要和接口名称一样,区分大小写
2.mapper文件和dao接口需要在同一目录
-->
<package name="com.there.dao"/>
PageHelper:分页
功能:实现数据库的分页
使用步骤
1.加入maven依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.2.1</version>
</dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.2.1</version>
</dependency>
2.在mybatis主配置文件加入plugin
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>
3.在查询方法前,加入PageHelper方法的调用
PageHelper.startPage(2,5);
0 条评论
下一页