MyBatis——09MyBatis之settings标签&parameterType 属性&实现 mysql 分页

MyBatis注意点

settings标签

  1. 在 mybatis 全局配置文件中通过 settings 标签控制 mybatis 全局开关
  2. 在 mybatis.xml 中开启 log4j
    2.1 必须保证有 log4j.jar
    2.2 在 src 下有 log4j.properties
<settings>
	<setting name="logImpl" value="LOG4J"/> 
</settings>
  1. log4j 中可以输出指定内容的日志(控制某个局部内容的日志级别)
    ①命名级别(包级别):namespace 属性中除了最后一个类名以外的
    举例:namespace=”com.youdian.mapper.SumMapper” 其中包级别为com.youdian.mapper,需要在 log4j.propeties 中
    步骤:
    先在总体级别调成 Error 不输出无用信息
    在设置某个指定位置级别为 DEBUG

    举例在log4j.propeties中:
log4j.rootCategory=ERROR
log4j.logger.com.youdian.mapper=DEBUG

②类级别
namespace 属性值 ,namespace 类名
③方法级别
使用 namespace 属性值+标签 id 属性值

parameterType 属性

  1. 在XXXMapper.xml中等标签的 parameterType 可以控制参数类型
  2. SqlSession 的 selectList()和 selectOne()的第二个参数和 selectMap()的第三个参数都表示方法的参数
    举例:

其中在 Mapper.xml 中可以通过#{}获取参数。用parameterType 控制参数类型,#{}获取参数内容:
①使用索引,从 0 开始 #{0}表示第一个参数
②使用#{param1}第一个参数
③如果只有一个参数(基本数据类型或 String),mybatis对#{}里面内容没有要求只要写内容即可

举例如下:

People p = session.selectOne("a.b.selById",1); 
System.out.println(p);
<mapper namespace="a.b">
<select id="selById" resultType="com.youdian.pojo.People" parameterType="int"> 
select * from people where id=#{0} 
</select>

④如果参数是对象——#{属性名}
⑤如果参数是 map 写成—— #{key} ,希望传递多个参数,可以使用对象或map,举例如下:

		
		Map<String,Object> map = new HashMap<>();
		map.put("pageSize", pageSize);
		map.put("pageStart", pageSize*(pageNumber-1));
		List<People> p = session.selectList("a.b.page",map);
		System.out.println(p);
	<mapper namespace="a.b">
		<select id="page" resultType="com.youdian.pojo.People"
		parameterType="map">
			select * from people where id=#{id} and name='#{name}'
		</select>

#{} 和 ${} 的区别

  1. #{} 获取参数的内容支持索引获取,param1获取指定位置参数,并且 SQL 使用?占位符进行处理
  2. $ {} 是字符串拼接,不使用?占位符,默认找${内容}内容的 get/set 方法,如果写数字,就是一个数字

注:
如果在 xml 文件中出现 “<”,“>”,双引号 等特殊字符时可以使用XML 文件转义标签(XML 自身的)————<![CDATA[ 内容 ]]>

举例如下:

	<select id="test" resultType="com.youdian.pojo.People"
	parameterType="int">
		<![CDATA[ select * from people where id<#{0} ]]>
	</select>

mybatis 中实现 mysql 分页写法

JDBC中占位符?不允许在关键字前后进行数学运算,需要在代码中计算完成后传递到 mapper.xml 中
5.2 在 java 代码中计算

//显示几个 int pageSize = 2;
//第几页 int pageNumber = 2;
//如果希望传递多个参数,可以使用对象或 map 
Map<String,Object> map = new HashMap<>(); 
map.put("pageSize", pageSize); 
map.put("pageStart", pageSize*(pageNumber-1)); 
List<People> p = session.selectList("包名.类名.page",map);

5.3 在 mapper.xml 中代码

<select id="page" resultType="com.youdian.pojo.People" 
parameterType="map"> 
select * from people limit #{pageStart},#{pageSize} 
</select>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值