SSM(三)使用MyBatis实现条件查询

一、本文章学习目标

1. 掌握SQL映射文件的常用元素

2. 掌握select完成(单/多)条件查询

二、SQL映射的XML文件

1. MyBatis真正的强大在于映射语句,专注于SQL,功能强大,SQL映射的配置却是相当简单。

2. SQL映射文件的几个顶级元素(按照定义的顺序)

  • mapper - namespace(接口的包名.接口名保持一致)
  • cache - 配置给定命名空间的缓存
  • cache-ref - 从其他命名空间引用缓存配置
  • resultMap - 用来描述数据库结果集和对象的对应关系(重点)
  • sql - 可以重用的SQL块,也可以被其他语句引用
  • insert - 映射插入语句
  • update - 映射更新语句
  • delete - 映射删除语句
  • select - 映射查询语句

详解:

mapper映射文件的根节点,只有一个属性namespace,通过namespace可以区分不同的mapper,做到全局的唯一,通过namespace绑定dao接口,实现面向接口编程。

三、mapper元素

1. mapper:只有一个属性namespace,命名空间。

2. namespace和子元素的id联合保证唯一,区别不同的mapper。

3. 绑定DAO接口:namespace的命名必须跟某个接口同名;接口中的方法与映射文件中SQL语句id一一对应。

四、select元素

1. select是MyBatis中最常用的元素之一。

2. select语句有很多属性可以详细配置每一条语句:

  • id:命名空间中唯一的标识符。接口中的方法与映射文件中的SQL语句id一一对应
  • parameterType:传入SQL语句的参数类型的完全限定名或别名
  • resultType:SQL语句返回值类型的完整类名或别名

3. 案例:根据用户名称查询用户列表(模糊查询)

UserMapper.xml

	<!-- 根据用户名查询用户列表(模糊查询) -->
	<select id="getUserListByUserName" parameterType="string" resultType="user">
		select * from smbms_user where userName like CONCAT('%',#{uName},'%')
	</select>

UserMapper.java

public interface UserMapper {
	public List<User> getUserList();
	
	public List<User> getUserListByUserName(String uName);
}

UserMapperTest.java

@Test
	public void testGetUserListByUserName() {
		List<User> userList = null;
		SqlSession sqlSession = null;
		try {
			sqlSession = MyBatisUtil.createSqlSession();
			userList = sqlSession.getMapper(UserMapper.class).getUserListByUserName("a");
		}finally {
			MyBatisUtil.closeSqlSession(sqlSession);
		}
		
		for(User user : userList) {
			logger.debug("testGetUserListByUserName userCode: " + user.getUserCode() + " userName: " + user.getUserName());
		}
	}

4. 按条件查询用户表,若多条件情况下如何处理?

parameterType:

  • 基础数据类型

int、String、Date等

只能传入一个,通过#{参数名}即可获取传入的值

UserMapper.java

public interface UserMapper {
	public List<User> getUserList();
	
	public List<User> getUserListByUserName(String uName);
	
	public List<User> getUserListByUser(User user);
}

UserMapper.xml

<!-- 多条件查询用户列表 -->
	<select id="getUserListByUser" resultType="user" parameterType="user">
		select * from smbms_user where userName like CONCAT('%',#{userName},'%') and userRole=#{userRole}
	</select>

UserMapperTest.java

@Test
	public void testGetUserListByUser() {
		List<User> userList = null;
		SqlSession sqlSession = null;
		User user = new User();
		user.setUserName("a");
		user.setUserRole(1);
		try {
			sqlSession = MyBatisUtil.createSqlSession();
			userList = sqlSession.getMapper(UserMapper.class).getUserListByUser(user);
		} finally {
			MyBatisUtil.closeSqlSession(sqlSession);
		}
		
		for(User u : userList) {
			logger.debug("testGetUserListByUser userCode: " + u.getUserCode() + "userName: " + u.getUserName());
		}
	}
  • 复杂数据类型

Java实体类、Map等

通过#{属性名}或者#{Map的key}即可获取传入值

UserMapper.java

	public List<User> getUserListByMap(Map<String, String> userMap);

UserMapper.xml

<select id="getUserListByMap" resultType="user" parameterType="Map">
		select * from smbms_user where userName like CONCAT('%',#{uName},'%') and userRole=#{uRole}
	</select>

UserMapperTest.java

@Test
	public void testGetUserListByMap() {
		List<User> userList = null;
		SqlSession sqlSession = null;
		Map<String, String> userMap = new HashMap<String, String>();
		userMap.put("uName", "a");
		userMap.put("uRole","1");
		try {
			sqlSession = MyBatisUtil.createSqlSession();
			userList = sqlSession.getMapper(UserMapper.class).getUserListByMap(userMap);
		} finally {
			MyBatisUtil.closeSqlSession(sqlSession);
		}
		
		for(User u : userList) {
			logger.debug("testGetUserListByUser userCode: " + u.getUserCode() + "userName: " + u.getUserName());
		}
	}

总结:MyBatis入参:

(1)单参数入参:Java基础数据类型

(2)多参数入参:Java实体类或者封装成Map

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于SSM+MySQL的企业人力资源管理系统是一个用于企业内部人力资源管理的综合平台。该系统采用了SSM(Spring+SpringMVC+MyBatis)框架作为后端开发技术,并结合MySQL数据库进行数据存储和管理。 企业人力资源管理系统旨在提供一个集中管理和优化企业人力资源的解决方案,以提高人力资源管理的效率和准确性。系统提供了一系列功能,包括员工信息管理、招聘流程管理、培训管理、绩效考核、薪酬管理等,以满足企业对人力资源的全面管理需求。 系统的主要功能包括: 员工信息管理:管理员可以在系统中录入和管理员工的基本信息,包括姓名、部门、职位、联系方式等。同时,系统还提供了员工档案的管理功能,可记录员工的学历、工作经验、个人技能等详细信息。 招聘流程管理:系统提供了招聘需求发布、简历筛选、面试安排等功能,帮助企业管理招聘流程并快速筛选合适的人才。管理员可以在系统中发布招聘岗位,设置筛选条件,并根据候选人的简历和面试表现进行评估和选择。 培训管理:系统记录和管理企业内部的培训活动,包括培训计划、培训内容、参与人员等。管理员可以根据不同岗位的需求制定培训计划,并跟踪员工的培训进度和效果。 绩效考核:系统提供绩效考核指标的设定和绩效评估功能。管理员可以设定不同岗位的考核指标,并根据员工的绩效表现进行评估和打分。系统自动生成绩效报表,帮助企业评估员工的工作表现和激励优秀员工。 薪酬管理:系统管理员工的薪资信息,包括基本工资、奖金、津贴等。管理员可以根据企业政策和员工绩效情况进行薪酬调整,并生成工资单和薪资报表。 基于SSM框架和MySQL数据库的应用,企业人力资源管理系统实现了数据的高效存储和管理。通过使用MyBatis进行数据库操作,提高了数据访问的性能和效率。同时,Spring框架提供了依赖注入、事务管理等功能,简化了系统的开发和维护工作,增强了系统的可扩展性和稳定性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值