当前位置: 首页 > news >正文

精准信息300099西安分类信息seo公司

精准信息300099,西安分类信息seo公司,疫情网页制作模板,互联网保险业务监管暂行办法目录 一.什么是Mybatis动态分页 二.mybatis中的动态SQL 在BookMaaper.xml中写sql BookMapper BookBiz接口类 BookBizImpl实现接口类 demo测试类 ​编辑 测试结果 三.mybatis中的模糊查询 mybatis中的#与$有是什么区别 在BookMapper.xml里面建立三个模糊查询 ​编辑 …

目录

一.什么是Mybatis动态分页

二.mybatis中的动态SQL

在BookMaaper.xml中写sql

BookMapper

BookBiz接口类

 BookBizImpl实现接口类

demo测试类

​编辑  测试结果

三.mybatis中的模糊查询

mybatis中的#与$有是什么区别

在BookMapper.xml里面建立三个模糊查询

​编辑 Bookmapper

BookBiz接口类

​编辑 

BookBizImpl实现接口类 

 demo测试类

测试结果

四.mybatis中结果映射

面试题:使用mybatis的各种场景,返回的结果是多样的,resultType/resultMap有什么区别

实例演示


一.什么是Mybatis动态分页

MyBatis是Java中一种持久层框架,它提供了许多数据库操作的便利性。在使用MyBatis进行数据查询时,动态分页是一种常见的需求。

动态分页是指根据用户的请求动态生成数据库查询语句,以满足不同的分页需求。具体来说,动态分页通过在查询语句中添加limit和offset来实现。limit表示每页查询的记录数,offset表示查询结果的偏移量。

在MyBatis中,可以使用动态SQL语句来实现动态分页。动态SQL语句是一种可以根据条件决定是否包含某一段SQL语句的技术。MyBatis提供了一些标签和函数来支持动态SQL语句的编写,比如if、choose、when、otherwise等。

使用MyBatis实现动态分页的步骤如下:

  1. 在SQL映射文件中定义查询语句,根据需要使用动态SQL语句。
  2. 在查询语句中使用limit和offset来实现分页。
  3. 在Java代码中调用MyBatis的分页方法,传入分页参数。
  4. MyBatis会根据传入的分页参数动态生成查询语句,返回分页结果。

总结来说,MyBatis的动态分页可以根据用户的需求动态生成查询语句,实现灵活的数据分页操作。

二.mybatis中的动态SQL

MyBatis的动态SQL在实际开发中具有一些优势和一些潜在的弊端。下面是它们的一些特点:

优势:

  1. 灵活性高:动态SQL允许根据不同的条件动态生成SQL语句,使得查询更加灵活,可以根据实际需求调整查询逻辑。
  2. 可读性好:使用动态SQL可以根据条件自动拼接SQL语句,并且不会引入过多的冗余代码,提高了SQL语句的可读性。
  3. 性能优化:动态SQL可以根据实际情况动态生成查询语句,避免不必要的查询,提高查询性能。

弊端:

  1. 学习成本较高:动态SQL需要了解和掌握MyBatis的动态SQL标签和语法,相对于普通的静态SQL语句,学习成本较高。
  2. 可维护性差:对于复杂的动态SQL语句,难以维护和调试,因为SQL语句的生成逻辑可能会有较多的条件判断和嵌套。
  3. 可能存在安全隐患:动态SQL中直接拼接参数可能存在SQL注入的风险。因此,应该始终使用参数绑定方式,而不是直接在SQL语句中拼接参数。

需要注意的是,虽然动态SQL在某些情况下能提高查询性能,但当动态SQL变得过于复杂时,可能会导致查询的性能下降。因此,在实际开发中应根据实际情况综合考虑,权衡优势和弊端,选择最适合的方案。 

在BookMaaper.xml中写sql

 

BookMapper
package com.zking.mapper;import com.zking.model.Book;
import org.apache.ibatis.annotations.Param;import java.util.List;public interface BookMapper {int deleteByPrimaryKey(Integer bid);int insert(Book record);int insertSelective(Book record);Book selectByPrimaryKey(Integer bid);int updateByPrimaryKeySelective(Book record);int updateByPrimaryKey(Book record);List<Book> selectByBids(@Param("bids")  List bids);
}
BookBiz接口类
package com.zking.biz;import com.zking.model.Book;
import org.apache.ibatis.annotations.Param;import java.util.List;public interface BookBiz {int deleteByPrimaryKey(Integer bid);int insert(Book record);int insertSelective(Book record);Book selectByPrimaryKey(Integer bid);int updateByPrimaryKeySelective(Book record);int updateByPrimaryKey(Book record);List<Book> selectByBids(List bids);
}
 BookBizImpl实现接口类
package com.zking.biz.impl;import com.zking.biz.BookBiz;
import com.zking.mapper.BookMapper;
import com.zking.model.Book;import java.util.List;/*** @author bing人* @site* @company xy集团* @create 2023-08-21 10:16*/
public class BookBizimpl implements BookBiz {private BookMapper bookMapper;public BookMapper getBookMapper() {return bookMapper;}public void setBookMapper(BookMapper bookMapper) {this.bookMapper = bookMapper;}@Overridepublic int deleteByPrimaryKey(Integer bid) {return bookMapper.deleteByPrimaryKey(bid);}@Overridepublic int insert(Book record) {return bookMapper.insert(record);}@Overridepublic int insertSelective(Book record) {return bookMapper.insertSelective(record);}@Overridepublic Book selectByPrimaryKey(Integer bid) {return bookMapper.selectByPrimaryKey(bid);}@Overridepublic int updateByPrimaryKeySelective(Book record) {return bookMapper.updateByPrimaryKeySelective(record);}@Overridepublic int updateByPrimaryKey(Book record) {return bookMapper.updateByPrimaryKeySelective(record);}@Overridepublic List<Book> selectByBids(List bids) {return bookMapper.selectByBids(bids);}
}
demo测试类
  测试结果

 

三.mybatis中的模糊查询

这是一个面试题:

mybatis中的#与$有是什么区别

resulrType:对应的返回类型

resultMap:对应的是返回映射关系,值得是实体类与数据表字段的关系

通常而言,单表查询,以及返回单例,返回多表查询结果,使用resulrType

如果查询的结果,需要有关联属性的体现,那么用resultMap

1.$是占位符传参,#是预处理SQL

2.外在形式,$传参不带引号,#传参自带引号

3.$传参存在sql注入,#不存在

4.$可以用来做动态列,完成动态sql开发

预处理SQL

 

$只是传参是占位符的形式

在BookMapper.xml里面建立三个模糊查询
 Bookmapper

BookBiz接口类
 
BookBizImpl实现接口类 

 

package com.zking.biz.impl;import com.zking.biz.BookBiz;
import com.zking.mapper.BookMapper;
import com.zking.model.Book;import java.util.List;/*** @author bing人* @site* @company xy集团* @create 2023-08-21 10:16*/
public class BookBizimpl implements BookBiz {private BookMapper bookMapper;public BookMapper getBookMapper() {return bookMapper;}public void setBookMapper(BookMapper bookMapper) {this.bookMapper = bookMapper;}@Overridepublic int deleteByPrimaryKey(Integer bid) {return bookMapper.deleteByPrimaryKey(bid);}@Overridepublic int insert(Book record) {return bookMapper.insert(record);}@Overridepublic int insertSelective(Book record) {return bookMapper.insertSelective(record);}@Overridepublic Book selectByPrimaryKey(Integer bid) {return bookMapper.selectByPrimaryKey(bid);}@Overridepublic int updateByPrimaryKeySelective(Book record) {return bookMapper.updateByPrimaryKeySelective(record);}@Overridepublic int updateByPrimaryKey(Book record) {return bookMapper.updateByPrimaryKeySelective(record);}@Overridepublic List<Book> selectByBids(List bids) {return bookMapper.selectByBids(bids);}@Overridepublic List<Book> like1(String bname) {return bookMapper.like1(bname);}@Overridepublic List<Book> like2(String bname) {return bookMapper.like2(bname);}@Overridepublic List<Book> like3(String bname) {return bookMapper.like3(bname);}
}
 demo测试类
package com.zking.demo;import com.zking.biz.BookBiz;
import com.zking.biz.impl.BookBizimpl;
import com.zking.mapper.BookMapper;
import com.zking.model.Book;
import com.zking.utils.SessionUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;import java.util.Arrays;
import java.util.List;/*** @author bing人* @site* @company xy集团* @create 2023-08-21 10:28*/
public class Demo1 {private BookBiz bookBiz;private SqlSession sqlSession;@Beforepublic void a(){System.out.println("执行测试方法之前会执行的初始化代码块方法");this.sqlSession = SessionUtil.openSession();BookBizimpl book = new BookBizimpl();BookMapper mapper = this.sqlSession.getMapper(BookMapper.class);book.setBookMapper(mapper);this.bookBiz = book;}@Afterpublic void b(){System.out.println("执行测试方法之后的后执行的方法");//提交事务this.sqlSession.commit();}@Testpublic void text1(){System.out.println("测试查询方法方法..");Book book = bookBiz.selectByPrimaryKey(33);System.out.println(book);}@Testpublic void text2(){System.out.println("删除的方法");int insert = bookBiz.deleteByPrimaryKey(1);}@Testpublic void testById(){List<Integer> bids = Arrays.asList(new Integer[]{ 45, 46, 47,48,49});//jdk1.8的新特性bookBiz.selectByBids(bids).forEach(System.out::println);//上面一行代码抵三行代码
//        for (Book selectByBid : bookBiz.selectByBids(bids)){
//            System.out.println(selectByBid);
//        }}@Testpublic void testlike1(){bookBiz.like1("%圣墟%").forEach(System.out::println);}@Testpublic void testlike2(){bookBiz.like2("%圣墟%").forEach(System.out::println);}
}
测试结果

 

 

四.mybatis中结果映射

面试题:使用mybatis的各种场景,返回的结果是多样的,resultType/resultMap有什么区别

1.返回单表的对应的实体类,仅有一个查询结果,可以使用resultType/resultMap

实例演示

使用resultType:

测试结果: 

 

 

使用resultMap:

输出结果:

 

2.返回单表的对应的实体类,有多个查询结果,可以使用resultType/resultMap

 测试结果:

resultType:

 resultMap:

3.返回多表对应的结果,仅有一个查询结果,通常用resultType,也可以用resultMap

 

测试结果:

 

4.返回多表对应的结果,有多个查询结果,通常用resultType,也可以用resultMap

 

5.返回单个列段,仅有一个查询结果,就用resultType

 测试结果:

 

6.返回单个列段,有多个查询结果,就用resultType

 

测试结果:

 

 

 

http://www.ds6.com.cn/news/68609.html

相关文章:

  • wordpress google ua code 是什么快排seo排名软件
  • 深圳网站制作的公司哪家好随州网络推广
  • java网站开发教程流程盐城网站优化
  • 怎么做服装外贸网站怎么创建网站快捷方式
  • 高德地图vr全景怎么打开商丘网站seo
  • 网站关键词和描述怎么搞自己的网站
  • 免费解析网站建站推广网站
  • 做网站网页的人是不是思维名片seo什么意思
  • 大型购物网站建设品牌营销平台
  • 巴音郭楞网站建设宣传推广网络推广
  • wordpress添加附件下载站长之家 seo查询
  • 商丘行业网站建设开发公司发布广告的平台免费
  • 做外贸自己的公司网站广州网络营销产品代理
  • 基于mvc的jsp网站开发最常用的网页制作软件
  • 图片编辑器在线使用win7系统优化工具
  • 网站开发实训心得群排名优化软件
  • 通过网站做诈骗立案吗app开发公司哪家好
  • 网站建设kpi考核广告推广宣传
  • 湛江市政工程建设公司网站关键词排名查询网站
  • 网站建设贰金手指科捷6免费网站开发平台
  • 网站建设要代码有什么好处厦门百度快速优化排名
  • 网站制作报价明细表长春seo关键词排名
  • 免费建网站平台教百度云盘下载
  • 中国佛山手机网站建设市场调研问卷调查怎么做
  • 极速微网站建设cms全国疫情最新
  • 天津网站建设报价宁波网站建设网站排名优化
  • 网站虚拟机可以自己做吗青岛百度竞价
  • 做网站简单还是写程序真实的优化排名
  • 一级做爰片c视频网站国家免费职业培训平台
  • 劳动仲裁院内部网站建设今天新疆新闻头条