MyBatis

一 MyBatis 与 jdbc
MyBatis 自带连接池;jdbc不带。
二 模糊查询
第一种

	XML配置
	```
	UserMapper.xml
	 
	 <select id="findByName" parameterType="String" resultType="com.tutu.domain.User">
	        SELECT * FROM USER WHERE username LIKE #{username}
	  </select>
	 
	测试
	 
	 List<User> byName = mapper.findByName("%王%");
	```
	第二种
	
	```
	UserMapper.xml
	 
	 <select id="findByName" parameterType="String" resultType="com.tutu.domain.User">
	        SELECT * FROM USER WHERE username LIKE "%"#{username}"%"
	 </select>
	 
	 测试
	 
	 List<User> byName = mapper.findByName("王");
	 注:如果想用#号,只能是 "%"#{username}"%",Oracle中除了别名都不能用双引号。
	```
	第三种
	```
	UserMapper.xml
	 
	 <select id="findByName" parameterType="String" resultType="com.tutu.domain.User">
	        SELECT * FROM USER WHERE username LIKE '%${value}%'
	    </select>
	 
	 测试
	
	 List<User> byName = mapper.findByName("王");
	```
三 #{} 和 ${} 的区别
	1 #{}
		·是一个占位符;
		·可以自动进行 java 类型 和 jdbc类型 的自动转换;
		· 里面如果是字符类型 和 简单类型, 可以写任意值;
		·如果是对象类型,接卸符合OGNL表达式规则;
		·可以防止sql注入;
	2 ${}
		·是原封不动的sql拼接;
		·不会进行自动转换;
		· 里面如果是字符类型 和 简单类型,只能写 value;
		·如果是对象类型,接卸符合OGNL表达式规则;
		·无法防止sql注入
	总结:
		除了模糊查询 都用 #{}
		
四 包装类型做参数
	1 概念
		一次查询需要多个对象中的属性当条件的情况。
	2 resultMap 和 resultType 的区别
		如果数据库中的列名 和 pojo 中的属性名一致,使用resultType,否则用resultMap;
		 (需要起别名)
		 

		```
		<resultMap id="userMap" type="com.tutu.domain.User">
		        <id property="id" column="_id"></id>
		        <result property="username" column="_username"></result>
		 //id 一般用于主键  result 一般用于普通列名
		    </resultMap>
	
		    <select id="findAllMap" resultMap="userMap">
				   ...
		    </select>
		```
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值