settings标签—控制mybatis全局开关
-
在mybatis全局配置文件中通过标签控制mybatis全局开关
<settings> <setting name="logImpl" value="LOG4J"/> </settings>
-
注意:配置的时候一定要严格的按照dtd的格式来写
-
在mybatis.xml中开启log4j
- 必须保证有log4j.jar
- 在src下有log4j.properties
-
log4j中可以输出指定内容的日志(控制某个局部内容的日志级别),在log4j.properties中设置
-
先在总体输出级别调成Error,不输出其他信息
-
在设置某个指定位置的级别为DEBUG
-
命名级别(包级别):指定到某个包
log4j.logger.com.yzq.mapper=DEBUG
-
类级别:指定到某个类
log4j.logger.com.yzq.mapper.UserMapper=DEBUG
-
方法级别:精确到指定的方法
log4j.logger.com.yzq.mapper.UserMapper.selectUser=DEBUG
-
-
parameterType属性—控制参数类型
-
在XxxMapper.xml中等标签的parameterType可以控制参数类型
-
SqlSession的selectList()和selectOne()的第二个参数和selectMap()的第三个参数都表示方法的参数
-
实例:
Map<String, Object> map = new HashMap<String, Object>(); map.put("id", 1); map.put("name", "张三"); User user = session.selectOne("com.yzq.mapper.UserMapper.selById", map); System.out.println(user);
mapper.xml
<select id="selById" parameterType="map" resultType="com.yzq.pojo.User"> select * from user where id=#{id} and name=#{name} </select>
-
在Mapper.xml中可以通过#{}获取参数
- parameterType控制参数类型
- #{}获取参数内容
- 使用索引,从0开始#{0}表示第一个参数
- 也可以使用#{param1},也表示第一个参数
- 如果只有一个参数(基本数据类型或String),mybatis对#{}里面的内容没有要求,只要求写内容即可。
- 如果参数是对象#{属性名}
- 如果参数是map写成#{key}
-
-
#{}和${}的区别
-
#{}获取参数的内容支持索引获取,param1获取指定位置参数,并且SQL使用?占位符
-
字 符 串 拼 接 的 方 法 , 不 使 用 ? 默 认 找 {}字符串拼接的方法,不使用?默认找 字符串拼接的方法,不使用?默认找{内容}内容的get/set方法,如果写数字,就是一个数字
-
-
如果在xml文件中出现"<",">",双引号等特殊字符时,可以使用XML文件转义标签(XML自身的)
- <![CDATA[ 内容 ]]>,例如:
<select id="sel" resultType="com.yzq.pojo.User" parameterType="int"> <![CDATA[select * from user where id < #{id}]]> </select>
- <![CDATA[ 内容 ]]>,例如:
-
mybatis中实现MySQL分页写法
- ?不允许在关键字前后进行数字运算,需要在代码中计算完成后传递到mapper.xml
- 在java代码中计算
- 在mapper.xml中代码
typeAliaases别名
-
系统内置别名:把类型全小写
-
给某个类起别名
-
alias=“自定义”
-
在mapper.xml中user引用user类
-
-
直接给某个包下所有类起别名,别名为类名,区分大小写
- 在mybatis中配置
- 在mapper.xml中通过类名引用