mybatis获取参数值的两种方式:

${}:insert into emp values(null, admin, 23, 男)

Statement:必须使用字符串拼接参数的方式操作SQL,一定要注意单引号问题

#{}:insert into emp values(null, ?, ?, ?)

PreparedStatement:可以使用通配符操作SQL,因为在String赋值时,可以自动加单引号,因为不需要注意单引号的使用问题

使用建议:建议使用#{},在特殊情况下,需要使用${},例如模糊查询和批量删除

不同的参数类型,${}和#{}的不同取值方式:

1、当传输参数为单个String或基本数据类型和其他包装类

#{}:可以以任意的名字获取参数值

: 只 能 以 {}:只能以 :{value} 或 ${_parameter}获取

2、当传输参数都为JavaBean时

#{}和 都 可 以 通 过 属 性 名 直 接 获 取 属 性 值 , 但 是 要 注 意 {}都可以通过属性名直接获取属性值,但是要注意 {}的单引号问题

3、当传输多个参数时,mybatis会默认将这些参数放在map集合中

两种方式:

(1)键:#{0}、#{1}; #{param1}、#{param2}
(2)键为param1,param2,param3…paramN, 以参数为值

#{}: #{0}、#{1} ;#{param1}、#{param2}

${}: p a r a m 1 、 {param1}、 param1{param2},但是要注意${}的单引号问题

4、当传输Map参数时

#{}和 都 可 以 通 过 键 的 名 字 直 接 获 取 , 但 是 要 注 意 {}都可以通过键的名字直接获取,但是要注意 {}的单引号问题

5、命名参数

可以通过@Param(“key”) 为map集合指定键的名字

Emp getEmpByEidAndEnameByParam(@Param(“eid”) String eid, @Param(“ename”) String ename);

#{} 和 都 可 以 通 过 键 的 名 字 直 接 获 取 , 但 是 要 注 意 {} 都可以通过键的名字直接获取,但是要注意 {} 的单引号问题

6、当传输参数为List或Array, myBatiws会将List或Array放在map中

List以list为键, Array以array为键

原生写法:

public class TestJDBC {
	public static void main(String[] args) throws Exception {
		// forName加载并初始化这个类    加载dirvie驱动
		Class.forName("com.mysql.jdbc.Driver");
		Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/ssm", "root", "root");
		
		// 第一种 #{}
		PreparedStatement ps = conn.prepareStatement("insert into emp values(null, ?, ?, ?)", 1);
		ps.setString(1, "root");
		ps.setString(2, "23");
		ps.setString(3, "男");
		ps.executeUpdate();
		ResultSet rs = ps.getGeneratedKeys();
		// 指针指向下一个
		if(rs.next()) {
			int key = rs.getInt(1);
			System.out.println(key);
		};
		// 第二种 ${}
		Statement statement = conn.createStatement();
		Emp emp = new Emp(null, "a", 1, "b");
		statement.executeUpdate("insert into emp values(null, '" + emp.getEname() + "' , " + emp.getAge() + ", '" + emp.getSex() + "')");
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值