Mybatis多条模糊查询(Like)及分页详细代码

话不多说代码呈上:

映射代码

 

<select id="selectLike" parameterType="hashmap"  resultType="com.dhw.vo.TRepoReditList">
select * from t_repo_redit_list 
<where>  
<if test="map.reportName!=''">and ReporterName like '%${map.reportName}%'</if>
<if test="map.mediumName!=''">and MediumName like '%${map.mediumName}%'</if>
</where> limit #{map1.page},#{map1.size}
</select>
 <select id="selectLikeSum"   resultType="int">
select count(*) from t_repo_redit_list 
 <where>  
<if test="reportName!=''">ReporterName like '%${reportName}%'</if>
<if test="mediumName!=''">and MediumName like '%${mediumName}%'</if>
</where> 
</select>

dao层代码:

public List<TRepoReditList> selectLike(@Param("map1")Map<String,Integer> map1,@Param("map")Map<String,String> map);
public int selectLikeSum(Map<String,String> m);

service层代码:

public List<TRepoReditList> selectLike(Map<String,Integer> map1,Map<String,String> map){
		return treporeditDao.selectLike(map1,map);
	}
	public int selectLikeSum(Map<String,String> m){
		return treporeditDao.selectLikeSum(m);
	}

controller层代码:

@RequestMapping("LikeReporter.do")
	public String selectLike(Model m,@RequestParam(defaultValue="1",required=false,value="page")Integer page,String name,String media ){
		Map<String,String> map= new HashMap<String, String>();
		map.put("reportName", name);
		map.put("mediumName", media);
		int sum=treporeditService.selectLikeSum(map);
		sum=sum%12==0?sum/12:sum/12+1;
		Map<String,Integer> map1= new HashMap<String, Integer>();
		map1.put("page",(page-1)*12);
		map1.put("size",12);
		m.addAttribute("repoReditList", treporeditService.selectLike(map1,map));
		m.addAttribute("nowpage", page);
		m.addAttribute("sum", sum);
		return "/WEB-INF/pages/files/listReporter.jsp";
	}

jsp略!!

MyBatis 分页查询、模糊查询以及映射文件都是 MyBatis 框架中用于构建 SQL 查询的强大特性。下面分别对这三个概念进行简要解释: ### 1. **MyBatis 分页查询** 在传统的 SQL 中,进行分页操作需要通过 LIMIT 和 OFFSET 关键字来指定每一页的数据范围。但在 MyBatis 中,为了简化分页操作并提高性能,引入了自定义分页插件,如 MyBatis Plus 的 `PageHelper` 插件。用户只需要在配置文件中开启此功能,并提供分页的相关参数,即可生成对应的 SQL 语句进行分页查询。 #### 使用示例: ```java import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; PageHelper.startPage(pageNum, pageSize); List<MyModel> models = yourMapper.selectAllModels(); PageInfo<MyModel> pageInfo = new PageInfo<>(models); System.out.println("总页数:" + pageInfo.getPages()); ``` ### 2. **MyBatis 模糊查询** 模糊查询允许在数据库查询中使用 LIKE 运算符,其中通配符 `%` 可表示任意字符串。在 MyBatis 中,通过在 SQL 语句中直接添加 WHERE 子句并包含合适的模糊匹配条件来进行。 #### 示例 SQL 语句: ```sql SELECT * FROM table_name WHERE column_name LIKE '%search_keyword%'; ``` 在映射文件中定义对应的方法和参数: ```xml <select id="selectWithFuzzyMatch" resultType="your_model"> SELECT * FROM table_name WHERE column_name LIKE CONCAT('%', #{searchKeyword}, '%') </select> ``` ### 3. **MyBatis 映射文件** MyBatis 的核心组件之一就是 XML 或者注解形式的映射文件 (`mapper.xml`),它负责定义如何将数据库表转换成 Java 对象。在映射文件中,可以定义 SQL 查询、插入、更新和删除操作等。 #### 示例映射文件结构: ```xml <mapper namespace="com.example.your_package.YourDao"> <select id="selectAllModels" resultType="com.example.your_package.Model"> SELECT * FROM model_table </select> <!-- 其他操作如:insert, update, delete --> </mapper> ``` 通过以上三个方面的理解,你可以更深入地掌握 MyBatis 平台的基本操作,包括数据检索、复杂查询和业务逻辑处理等方面。此外,MyBatis 还支持动态SQL表达式、缓存机制等高级特性,进一步提升应用的性能和灵活性。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值