springboot+mybatis的一个sql交互问题
假如现在有三个类对应写在同一个表里面:cat dog pig(三个类对应的字段略有不同)
查询时根据表里的一个字段type做划分(即type=cat or type=dog or type=pig)
目前是准备了三个mapper去获取对应的数据
queryCat(), queryDog(), quertPig()
目前设想在构建sql语句进行查询
1、queryCat(String type)
对应sql: select ... from ... where type=#{type}
2、queryCat()
对应sql: select ... from ... where type='cat' // 类似于在sql里写死那个type来查询
1、请问上面两种写法,哪个好些?有没有刚好的写法?
2、有无可能把三个查询mapper合成一个?
我之前想过把三个品种的查询全部写在一个sql里(用if标签结合type字段来做),但由于有部分字段不同,且返回类型不太好选择,所以没有这么做。
回答:
可以这样试一试
public interface AnimalMapper { List<Animal> queryByType(String type);
}
public interface AnimalTypeConst {
String CAT = "cat";
String DOG = "dog";
String PIG = "pig";
}
public interface AnimalService {
List<Animal> getAllCat();
List<Animal> getAllDog();
List<Animal> getAllPig();
}
public class AnimalServiceImpl implements AnimalService {
private AnimalMapper animalMapper = /* Spring的话就注解 */;
public List<Animal> getAllCat() { return animalMapper.queryByType(AnimalTypeConst.CAT)}
public List<Animal> getAllDog() { return animalMapper.queryByType(AnimalTypeConst.DOG)}
public List<Animal> getAllPig() { return animalMapper.queryByType(AnimalTypeConst.PIG)}
}
回答:
一点参考的思路
public interface Animal{} public class Cat implements Animal{}
public class Dog implements Animal{}
public class Pig implements Animal{}
List<Animal> queryAnimal(String animalType) {
return animalMapper.queryAnimal(animalType);
}
animalMapper
select ... from ... <where>
<if test="type!=null & type!=''">
type=#{type}
</if>
</where>
以上是 springboot+mybatis的一个sql交互问题 的全部内容, 来源链接: utcz.com/p/944349.html