先构建好环境
1.创建Maven项目
2.搭建MyBatis环境
3.连接一个MySql的DataBase
4.再检查一遍配置文件有没有写对
mapper中传递多个参数(学过的…)
1.使用@Param注解来指定名称
/**
* 接口中的方法如下
*@param userName用户名
*@param password 密码
*/
List <User> selectUserByUserNameAndPassword(@Param(“userName”)String userName
,@Param(“Password”) String password);
@Param指定了两个参数名字userName 和 Password 在mapper映射文件中映射方法如下
<select id=“selectUserByUserNameAndPassword” resultType=“User”>
SELECT * FROM smbms_user
Where userName = #{userName}
and Password = #{Password}
</select>
2.在映射文件使用#{0},#{1}等占位符
映射文件代码如下
<select id=“selectUserByUserNameAndPassword” resultType=“User”>
SELECT * FROM smbms_user
Where userName = #{0}
and Password = #{1}
</select>
/**
* #{0} 和 #{1} 的值就是调用方法时实参的第一个值和第二个值
*/
3.使用Map集合传入参数
<select id=“selectUserByUserNameAndPassword” resultType=“User”>
SELECT * FROM smbms_user
Where userName = #{name}
and Password = #{password}
</select>
/**
* #{name} 和 #{password} 对应的是集合键(key)的名称
*/
#{}和${}区别
1.使用#{}传值时
/**
* 假设第一个参是 admin
* 第二个参是 pwd123456
*/
<select id=“selectUserByUserNameAndPassword” resultType=“User”>
SELECT * FROM smbms_user
Where userName = #{0}
and Password = #{1}
</select>
上面加粗sql语句就是下面这样
SELECT * FROM smbms_user
Where userName = "admin"
and Password = "pwd123456"
2.使用${}传值时
/**
* 假设第一个参是 admin
* 第二个参是 pwd123456
*/
<select id=“selectUserByUserNameAndPassword” resultType=“User”>
SELECT * FROM smbms_user
Where userName = ${0}
and Password = ${1}
</select>
上面加粗sql语句就是下面这样
SELECT * FROM smbms_user
Where userName = admin
and Password = pwd123456
3.使用#{}传列名
SELECT * FROM smbms_user
Where userName = "admin"
Order By "id"
发现列名有个双引号,这会异常;
列名可以不写符号, 写的话就要用`` ps两个小撇不是单引号
总结:
1.能用#{}传值就尽量用#{}传值
2.传入表或者列时要用${}