mybatis——注解模式的一对一和一对多模糊查询

一、注解模式
1、注意model下的类中address和grade里要添加属性,和其getter,setter方法

private list<Acc> accs;
public List<Acc> getAccs() {
		return accs;
	}
	public void setAccs(List<Acc> accs) {
		this.accs = accs;
	}

2、建立sqlsession所需的工具类
3、mybatsi-config和之前同,无甚么变化
4、一对一

//	id查找
	@Select("select * from acc where userid=#{userid}")	//,不用一对一或一对多的话,其实这句话就够了
	@Results({
		@Result(id=true,property = "userid" ,column = "userid"),
		@Result(property = "username",column = "username"),
		@Result(property = "password",column = "password"),
		@Result(property = "motto",column = "motto"),
		@Result(property = "address",column = "addressId",one = @One(select = "com.mao.mybatis.dao.AddressDao.selectByAid")),
		@Result(property = "grade",column = "gradeid",one = @One(select = "com.mao.mybatis.dao.GradeDao.selectByGid"))
	})
	public Acc selectByUid(int userid);
	
	@Select("select * from address where aid=#{aid}")
	public Address selectByAid(int aid);

	@Select("select * from grade where gid=#{gid}")	
	public Grade selectByGid(int gid);	//方便起见放在一起看,其实分别在三个接口里

测试

@Test
	public void testSelectAccByUid() {
		log.info("测试一对一");
		Acc acc = accDao.selectByUid(1001);
		log.info(acc);
	}

结果

[main] INFO com.mao.mybatis.dao.AccDaoTest - Acc [userid=1001, username=翟川, password=123456, motto=没有什么是我做不到的, address=Address [aid=1, sheng=陕西省, shi=西安市, qu=雁塔区, accs=null], grade=Grade [gid=1, gname=火箭班, accs=null]]

5、模糊查询一对多

@Select("select * from address where sheng like #{sheng} or shi like #{shi} or qu like #{qu}")
	@Results({
		@Result(id=true,property = "aid",column = "aid"),
		@Result(property = "sheng",column = "sheng"),
		@Result(property = "shi",column = "shi"),
		@Result(property = "qu",column = "qu"),
		@Result(property = "accs",column = "aid",many = @Many(select = "com.mao.mybatis.dao.AccDao.selectByAid")),
	})
	public List<Address> selectByKey(String key);

@Select("select * from acc where addressId=#{addressId}")
	@Results({
		@Result(id=true,property = "userid" ,column = "userid"),
		@Result(property = "username",column = "username"),
		@Result(property = "password",column = "password"),
		@Result(property = "motto",column = "motto"),
		@Result(property = "address",column = "addressId",one = @One(select = "com.mao.mybatis.dao.AddressDao.selectByAid")),
		@Result(property = "grade",column = "gradeid",one = @One(select = "com.mao.mybatis.dao.GradeDao.selectByGid"))
	})
	public List<Acc> selectByAid(int aid);	方便起见放在一起看,其实分别在两个接口里

测试:

@Test
	public void testSelectByKey() {
		log.info("模糊查询");
		List<Address> adds = addressDao.selectByKey("%西%");
		for (Address address : adds) {
			log.info(address);
		}
	}

结果

[main] INFO com.mao.mybatis.dao.AddressDaoTest - Address [aid=1, sheng=陕西省, shi=西安市, qu=雁塔区, accs=[Acc [userid=1001, username=翟川, password=123456, motto=没有什么是我做不到的, address=Address [aid=1, sheng=陕西省, shi=西安市, qu=雁塔区, accs=null], grade=Grade [gid=1, gname=火箭班, accs=null]]]]
[main] INFO com.mao.mybatis.dao.AddressDaoTest - Address [aid=2, sheng=山西省, shi=运城市, qu=盐湖区, accs=[Acc [userid=1002, username=唐敏, password=456789, motto=唐敏没啥。, address=Address [aid=2, sheng=山西省, shi=运城市, qu=盐湖区, accs=null], grade=Grade [gid=1, gname=火箭班, accs=null]], Acc [userid=1003, username=张海阳, password=123456, motto=你永远不知道睡觉对于睡神的美妙之处。, address=Address [aid=2, sheng=山西省, shi=运城市, qu=盐湖区, accs=null], grade=Grade [gid=1, gname=火箭班, accs=null]]]]
[main] INFO com.mao.mybatis.dao.AddressDaoTest - Address [aid=10, sheng=山西, shi=太原, qu=大梁渠, accs=[]]

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值