SQL映射的XML文件
mapper
映射文件的根元素节点,只有一个属性namespace(命名空间)
namespace和子元素id联合保证唯一,区别不同的mapper
注:namespace的命名必须要跟某个DAO接口同名,同属DAO层,故代码结构上,映射文件与该DAO接口应放置在统一package下(如com.msds.dao),并且习惯上都以Mapper结尾(UserMapper.java、UserMapper.xml)
在不同的mapper文件中,子元素的id可以相同,MyBatis通过namespace和子元素的id联合区分。接口中的方法与映射文件中的SQL语句id应一一对应
使用select完成单一条件查询
select是MyBatis中最常用的元素之一
Dao接口
//根据用户名称查询用户列表 模糊查询
List<User> getUserListByName(String name);
Dao接口映射文件
<!--根据用户名称查询用户列表 模糊查询-->
<select id="getUserListByName" resultType="user" parameterType="string">
SELECT * FROM smbms_user WHERE userName LIKE CONCAT ('%',#{name},'%')
</select>
id:命名空间唯一的标识符、接口中的方法与映射文件中的SQL语句id一一对应
parameterType:传入SQL语句的参数类型
resultType:SQL语句返回值类型的完整类型名或别名
参数传递------>#{参数名}
注:数据库表的字段名与JavaBean的属性名一致
使用select完成多条件查询
方式一:传递的参数是简单数据类型
Dao接口//根据用户名称和角色查询用户列表,用户名实现模糊查询 参数是基础数据类型 List<User> getUserListByNameAndRole1(@Param("xm") String name,@Param("js") Integer role);
Dao接口映射文件 <!--根据用户名称和角色查询用户列表,用户名实现模糊查询 参数是基础数据类型--> <select id="getUserListByNameAndRole1" resultType="user"> SELECT * FROM smbms_user WHERE userName LIKE CONCAT ('%',#{xm},'%') AND userRole=#{js} </select>
方式二:传递的参数是对象
Dao接口
//根据用户名称和角色查询用户列表,用户名实现模糊查询 参数是对象
List<User> getUserListByNameAndRole2User(User user);
Dao接口映射文件 <!--根据用户名称和角色查询用户列表,用户名实现模糊查询 参数是对象 #{对象的属性名}--> <select id="getUserListByNameAndRole2User" resultType="user" parameterType="user"> SELECT * FROM smbms_user WHERE userName LIKE CONCAT ('%',#{userName},'%') AND userRole=#{userRole} </select>
方式三:传递的参数是Map集合
Dao接口
//根据用户名称和角色查询用户列表,用户名实现模糊查询 参数是Map集合
List<User> getUserListByNameAndRole3Map(Map<String,String> userMap);
Dao接口映射文件 <!--根据用户名称和角色查询用户列表,用户名实现模糊查询 参数是Map集合 #{map的Key}--> <select id="getUserListByNameAndRole3Map" resultType="user" parameterType="