栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

mybatis的多表查询

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

mybatis的多表查询

文章目录
  • 一 parameterType(输入类型)
  • 二、 数据库元素名称与配置文件的标签名称不一致
  • 三、动态sql语句
    • 1.if标签
    • 2.where标签
    • fore 标签
  • 四、关联查询
    • 1.一对一查询
        • 1.创建查询语句映射表
        • 2.resultmap
    • 2.一对多查询
  • 五、mybatis整合spring
    • 1.整合步骤
      • 1.
    • 2.传统dao
    • 3.mapper代理模式开发dao


一 parameterType(输入类型)

1.传递简单类型
2.传递pojo对象,Mybatis使用ognl表达式解析对象字段的值,#{}或者${}括号中的值为pojo属性名称。
3.包装的pojo:对象里面还有对象
3.1代码实现

public class QueryVo {

	//包装user  包装的pojp
 // 对象里面还有对象
	private User user;
	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}
}



	 
	 SELECT * FROM `user`
	WHERe username LIKE '%${user.username}%'
	 



 
    List getUserByQueryVo(QueryVo vo);


	@Test
	public void testGetUserByQueryVo() {
		SqlSession sqlSession = SqlSessionFactoryUtils.getSqlSessionFactory().openSession(true);
		UserMapper mapper = sqlSession.getMapper(UserMapper.class);
		QueryVo vo = new QueryVo();
		User user2 = new User();
		user2.setUsername("张");
		vo.setUser(user2);
		List list = mapper.getUserByQueryVo(vo);
		for (User user : list) {
		}
		sqlSession.close();
	}
二、 数据库元素名称与配置文件的标签名称不一致

使用resultMap标签
下面的别名配置单表查询时只需配置别名不一样的元素即可
多表查询时需要全部配置

	
		
		
		
		
		
		
		
		
	
	
	
		
		SELECt * FROM USER where 1 = 1
		
		
			and id = #{id}
		
		
			and username LIKE '%${username}%'
		
	


2.where标签

		
		SELECT
		*FROM USER
		
		
			
			
			
				#{uid}
					
		
	
	public void testGetUserByIds() {
		SqlSession sqlSession = SqlSessionFactoryUtils.getSqlSessionFactory().openSession();
		UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
		QueryVo vo = new QueryVo();
		vo.setIds(Arrays.asList(22,26,28,31));
		List list = userMapper.getUserByIds(vo);
		for (User user : list) {
			System.out.println(user);
		}
		sqlSession.close();
	}
四、关联查询 1.一对一查询 1.创建查询语句映射表

类似于pojo的传参方式

2.resultmap
1.在order表中添加,目的是连表查询的时候进行输出用户表信息
	private User user;
	
	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}
2.配置resultmap

记住id

	
	
		
		
		
		
		
		
		
		
			
			
			
			
			
		
	
3.配置数据库查询语句
	
	
			SELECT
				u.id,
				u.username,
				u.birthday,
				u.sex,
				u.address,
				o.id oid,
				o.number,
				o.createtime,
				o.note
			FROM `user` u
			LEFT JOIN `order` o ON o.user_id = u.id 
	
	

4.测试
在进行遍历时要进行双重遍历
首先遍历user表
再在user表中进行fore循环
for(Order order : user.getOrder){
·· 此时还需判断 order.id是否为空值
}

五、mybatis整合spring 1.整合步骤
  1. 创建一个java工程。
  2. 导入jar包。(课前资料中mybatis与spring整合所有包)
  3. mybatis的配置文件sqlmapConfig.xml
  4. 编写Spring的配置文件
    (1)数据库连接及连接池
    (2)sqlsessionFactory对象,配置到spring容器中
    (3) 编写Spring的配置文件
  5. 复制jdbc.properties配置文件到新工程
  6. 复制log4j.properties配置文件到新工程
1.
	
	
		
		
		
		
		
		
		
		
	
	

	
		
		
		
		
		
		
	
2.传统dao
1. 	复制user.xml到新工程,并修改,只留下要测试的三个方法
2. 	在SqlMapConfig.xml加载user.xml
3. 	复制UserDao接口到新工程,并修改,只留下要测试的三个方法
4. 	编写UserDaoImpl实现类,关键是继承SqlSessionDaoSupport
5. 
3.mapper代理模式开发dao
  1. 复制UserMapper.xml到新工程,并修改,只留下要测试的三个方法
  2. 复制UserMapper接口到新工程,并修改,只留下要测试的三个方法
  3. 配置Mapper
  1. 单个接口配置MapperFactoryBean
	
     	
    
    
    
      
   	
  1. 配置包扫描器

   		

   
  1. 测试
public class UserMapperTest {
	
	private ApplicationContext applicationContext;
	
	@Before
	public void init(){
		applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
	}

	@Test
	public void testGetUserById() {
		UserMapper userMapper = applicationContext.getBean(UserMapper.class);
		User user = userMapper.getUserById(10);
		System.out.println(user);
	}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/288008.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号