根据传入的姓名或者职称查询信息
时间: 2024-01-05 20:03:06 浏览: 34
好的,根据你的需求,需要在查询语句中增加对姓名或职称的判断条件。下面是修改后的查询语句:
```
<select id="searchWithConditions" resultType="com.hospital.entity.Doctor">
SELECT * FROM hos_doc
WHERE 1=1
<if test="name != null and name != ''">
AND doc_name LIKE CONCAT('%', ${name}, '%')
</if>
<if test="title != null and title != ''">
AND doc_title LIKE CONCAT('%', ${title}, '%')
</if>
</select>
```
这个查询语句会根据传入的参数name或title来判断是否需要在查询时增加对姓名或职称的判断条件。如果name或title参数存在且不为空,则会增加对应的判断条件,否则不会增加任何条件。希望这可以解决你的问题。
相关问题
mybatis根据传入参数作为查询表名
在Mybatis中,如果要根据传入参数作为查询表名,可以使用动态SQL的方式来实现。具体实现步骤如下:
1. 在Mapper.xml文件中定义动态SQL语句,使用`${}`方式引用参数,如下所示:
```
<select id="selectByTableName" parameterType="String" resultType="Map">
SELECT * FROM ${tableName}
</select>
```
2. 在Mapper接口中定义方法,传入参数并调用动态SQL语句,如下所示:
```
public interface MyMapper {
List<Map<String, Object>> selectByTableName(String tableName);
}
```
3. 在调用接口方法时,传入表名参数,如下所示:
```
List<Map<String, Object>> result = myMapper.selectByTableName("user");
```
这样就可以根据传入的参数作为表名进行查询了。需要注意的是,通过这种方式传入的表名没有进行预编译,存在SQL注入的风险,应该避免使用不可信的参数作为表名。
mybatis根据姓名批量查询
假设你的实体类为User,包含属性id和name,你可以按照以下步骤进行批量查询:
1. 在Mapper.xml中编写查询语句,使用foreach标签遍历姓名列表进行查询:
```
<select id="batchSelectByName" parameterType="java.util.List" resultType="User">
SELECT * FROM user WHERE name IN
<foreach collection="list" item="name" open="(" separator="," close=")">
#{name}
</foreach>
</select>
```
2. 在Mapper接口中声明对应的方法:
```
List<User> batchSelectByName(List<String> nameList);
```
3. 在调用处调用该方法,传入姓名列表即可:
```
List<String> nameList = new ArrayList<>();
nameList.add("张三");
nameList.add("李四");
List<User> userList = userMapper.batchSelectByName(nameList);
```