Mybatis的搭建过程
-
导入jar
-
创建mybatis的核心(全局)配置文件mybatis-config.xml,并配置
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> </configuration>
-
创建映射文件xxxMapper.xml,并配置
-
创建mapper接口,实现两个绑定:
- 接口全限定名要和映射文件的namespace保持一致
- 接口中方法名和sql语句的id保持一致
-
获取mybatis操作数据库的会话对象SqlSession,通过getMapper()获取接口的动态代理实现类
-
测试
Mybatis获取参数值的两种方式
${}
:insert into ssm values(null, admin, 10, 男)
Statement:必须使用字符串拼接的方式操作SQL,一定要注意单引号问题
#{}
:insert into ssm values(null, ?, ? ,?)
PrepareStatement:可以使用通配符操作SQL,因为在为String赋值时,可以自动加单引号,因此无需注意单引号的问题
使用建议:建议使用#{} ,在特殊情况下,需要使用${},例如模糊查询和批量删除
不同的参数类型,${}和#{}的不同取值方式
- 当传输参数为单个String或基本数据类型和其他包装类
#{}
:可以以任意的名字获取参数值${}
:只能以${value}
或${_parameter}
获取
- 当传输参数为JavaBean时
#{}
和${}
都可以通过属性名直接获取属性值,但是需要注意 ${}的单引号问题
- 当传输多个参数时,mybatis会默认将这些参数放在map集合中
- 两种方式:
- 键为0,1,2,3....N-1,以参数为值
- 键为param1,param2,param3...paramN,以参数位置
- 两种方式:
- 当传输Map参数时
1.#{}和${}
都可以通过键的名字直接获值,但是要注意${}的单引号问题 - 命名参数
- 可以通过@Parm("key") 为map集合指定键的名字
- 当传输的参数为List或Array,mybatis会讲List或Array放在map中
- List以list为键,Array以array为键