根据站长的Mybatis部分内容 敲代码后的注释小结
Mybatis基础概念
-
MyBatis的传入参数parameterType类型分两种
-
- 基本数据类型:int,string,long,Date;
-
- 复杂数据类型:类和Map
-
-
如何获取参数中的值:
2.1 基本数据类型:#{value}或${value} 获取参数中的值
2.2 复杂数据类型:#{属性名}或KaTeX parse error: Expected 'EOF', got '#' at position 15: {属性名} ,map中则是#̲{key}或{key}
resultType:
1、基本类型 :resultType=基本类型
2、List类型: resultType=List中元素的类型
3、Map类型 单条记录:resultType =map
多条记录:resultType =Map中value的类型
操作步骤:
1.配置maven文件,构造mybatis mysql和junit驱动
2.创建mybatis-config.xml 用于连接数据库
3.创建Category类来接收数据库的返回对象,里面要包含get和set方法,还有每一列的值与类型
4.创建Category.xml文件,在里面 namespace指的是命名空间 用于帮助定位sql语句,并不是别名 是 类路径名即Category类的路径
5.在mapper里面写sql语句,其中 parameterType是指定输入类型 resultType是指定输出类型,其余按照格式即可
6.关于别名,在mybatis-config.xml里面配置即可
<typeAliases>
<package name="com.how2java.pojo"/>
</typeAliases>
Mybatis的模糊查询和多条件查询
模糊查询:
select * from category_ where name like concat('%',#{0},'%')
多条件查询:
select * from category_ where id> #{id} and name like concat('%',#{name},'%')
特别地,在parameterType上,多条件查询为Map,因为selectList只能传入一个条件,我们要借助Map
Map<String, Object> params = new HashMap<>;
params.put("id", 3);
params.put("name","cat");
List<Category> cs = session.selectList("lisstCategoryByIdAndName", params);
动态SQL
1.关于if语句
首先,if中若为null,就是全搜索。若if中不为null,则根据里面的sql语句执行
如果是无条件全部查询,直接可以用selectList进行,但若条件有多个,同上一致,我们也要进行Map操作
Map<Product> params = new HashMap<>();
params.put("name", "x");
List<Product> ps = session.selectList("listProduct", params);
for循环
2.关于where语句
首先,where是用来防止在多条件查找时因为and等等导致格式问题出错的
这样我们就可以大胆的在各个语句前加上and保证输出不会遗漏
3.关于set语句
set是用于update中的标签,若要修改多个字段,就可以用到set
记住每个if中间都要有逗号隔开
4.关于if else语句
实际上是模仿了switch-case语句
其中用when-otherwise来模仿
5.关于foreach语句
collection:指定要遍历的集合:
list类型的参数会特殊处理封装在map中,map的key就叫list
item:将当前遍历出的元素赋值给指定的变量
index:索引。遍历list的时候是index就是索引,item就是当前值
separator:每个元素之间的分隔符
open:遍历出所有结果拼接一个开始的字符
close:遍历出所有结果拼接一个结束的字符
index和item的区别
index代表每次循环的次数, 相当于for循环中的 i
item代表每次循环的变量值, 相当于for循环中的 varList.get(i)