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

淘宝客网站开发一个html基本标签

淘宝客网站开发一个,html基本标签,芜湖移动互联网开发,服务器做jsp网站教程视频播放Java Mybatis数据库面试题 前言1、什么是 Mybatis#xff1f;2、Mybaits 的优缺点#xff1a;3、SQL 注入如何防止#xff1f;4、MyBatis 框架适用场合#xff1a;5、MyBatis 与 Hibernate 有哪些不同#xff1f;6、#{}和${}的区别是什么#xff1f;7、当表中的字段名和实… Java Mybatis数据库面试题 前言1、什么是 Mybatis2、Mybaits 的优缺点3、SQL 注入如何防止4、MyBatis 框架适用场合5、MyBatis 与 Hibernate 有哪些不同6、#{}和${}的区别是什么7、当表中的字段名和实体类的属性名不一样 怎么办 8、模糊查询 like 语句该怎么写?9、Mapper接口有什么用10、Mapper接口里的方法能重载吗工作原理是什么11、mybatis使用了哪些设计模式12、Mybatis批量插入数据的方式?13、如何获取自动生成的(主)键值?14、在 mapper 中如何传递多个参数?15、Mybatis 动态 sql 有什么用有哪些动态 sql标签16、Xml 映射文件中除了select|insert|updae|delete标签之外还有哪些标签17、Mybatis 中不同的 Xml 映射文件id 是否可以重复18、为什么说 Mybatis 是半自动 ORM 映射工具它与全自动的区别在哪里19、一对一、一对多的关联查询 20、什么是 MyBatis 的接口绑定有哪些实现方式21、使用 MyBatis 的 mapper 接口调用时有哪些要求22、Mybatis 中的一级缓存与二级缓存23、MyBatis 的工作原理24、物理分页和逻辑内存分页25、Mybatis 是如何进行分页的分页插件的原理是什么26、Mybatis延迟加载的实现原理是什么 前言 最新的 Java 面试题技术栈涉及 Java 基础、集合、多线程、Mysql、分布式、Spring全家桶、MyBatis、Dubbo、缓存、消息队列、Linux…等等会持续更新。 如果对老铁有帮助帮忙免费点个赞谢谢你的发财手 1、什么是 Mybatis 1、Mybatis 是一个半 ORM对象关系映射框架它内部封装了 JDBC开发时只需要关注 SQL 语句本身不需要花费精力去处理加载驱动、创建/关闭连接等繁杂的过程。2、通过 xml文件或注解的方式将java对象和 statement的 sql动态参数进行映射生成最终的 sql 语句然后将结果映射为 java 对象并返回。 2、Mybaits 的优缺点 优点1、SQL语句写在XML中解除了SQL语句和程序代码的耦合便于统⼀管理2、能兼容各种数据库底层是通过JDBC来连接数据库3、消除JDBC⼤量冗余的代码不需要⼿动连接/释放等操作4、可以动态的生成SQL语句提供Java对象映射标签。缺点1、编写SQL语句的⼯作量较⼤尤其当字段和关联表比较多时2、SQL语句依赖于数据库不能随意更换数据库。 3、SQL 注入如何防止 SQL 注入产生的原因 SQL 语句编写不规范和没有对特殊字符进行过滤。 1、用户权限设置不能删除表或者库2、过滤特殊字符对insert、delete、update等字符进行过滤3、参数传值采用参数传值的方式传输变量4、编写规范SQL编写尽量不要省略单引号或双引号5、漏洞扫描通过专业的扫描工具及时的发现漏洞。 4、MyBatis 框架适用场合 1、MyBatis 专注于 SQL 本身是一个灵活的 DAO 层解决方案。2、对性能的要求很高或者需要动态生成SQ语句的项目MyBatis 将是不错的选择。 5、MyBatis 与 Hibernate 有哪些不同 1、Mybatis它是一个半 ORM 框架因为 MyBatis 需要程序员自己编写 Sql 语句2、Mybatis 的SQL语句是自己编写的可以严格控制 sql 语句执行性能灵活度高3、Mybatis的SQL 语句依赖于数据库不能随意更换数据库。 6、#{}和${}的区别是什么 1、#{}是预编译处理KaTeX parse error: Expected EOF, got # at position 29: …tis在处理sql语句时会把#̲{}替换为?占位符会把{}替换成变量的值2、#{}会自动添加引号而${}需要手动添加引号3、使用#{}可以有效的防止SQL注入提高系统安全性4、使用order by 动态参数排序时只能用KaTeX parse error: Expected EOF, got # at position 13: {}。 总的来说能使用#̲{}就不要使用{} 7、当表中的字段名和实体类的属性名不一样 怎么办 1、通过在查询的 sql 语句中定义字段的别名让字段的别名和实体类的属性名一致2、通过标签来映射字段名和实体类的属性名一一对应 8、模糊查询 like 语句该怎么写? select id”getUser”select * from user where name like concat(‘%’,#{name},‘%’) /select9、Mapper接口有什么用 1、Mapper 接口的全限定名就是xml映射文件中的 namespace 的值2、Mapper接口的方法名就是xml映射文件中的 Statement 的 id 值3、Mapper接口方法内的参数就是传递给 sql 语句的参数。4、Mapper 接口是没有实现类的当调用接口方法时接口的全限定名方法名作为 key 值可以唯一定位一个 xml映射文件中的sql节点 10、Mapper接口里的方法能重载吗工作原理是什么 Mapper 接口里的方法是不能重载的因为使用了Mapper接口的全限定名方法名作为 key值可以唯一定位一个 xml映射文件中的sql节点Mapper 接口的工作原理大概是Mybatis 运行时会使用 JDK 动态代理为 Mapper 接口生成代理对象代理对象会拦截接口方法转而执行对应的SQL语句然后返回结果将结果映射到Java对象中。 11、mybatis使用了哪些设计模式 1、代理模式mybatis在运行过程中使用jdk的动态代理模式创建了一个mapper接口的代理类对象2、建造者模式调用SqlSessionFactoryBuilder的build方法创建SqlSessionFactory对象3、工厂模式调用sqlSessionFactory的openSession方法创建sqlSession对象;4、策略模式openSession方法参数可以有多种控制后续的sql执行流程 12、Mybatis批量插入数据的方式? 1、在for循环中执行插入方法2、xml映射文件中的标签3、MybatisPlus提供的批量插入方法saveBatch4、手动获取会话对象SqlSession批量插入 sqlsession ss sqlsessionfactory.opensession(executortype.batch, false); UserMapper mapper ss.getmapper(UserMapper.class); userList.foreach(user - mapper.insertUser(user)); ss.commit();13、如何获取自动生成的(主)键值? insert 方法总是返回一个 int 值这个值代表的是插入的行数。 如果采用自增长策略自动生成的键值在insert方法执行完后可以被设置到传入的参数对象中 insert id”insertUser” usegeneratedkeys”true” keyproperty”id” insert into sys_user (name, age) values (#{name}, #{age}) /insert14、在 mapper 中如何传递多个参数? 第一种Mapper接口的方法 public User selectUser(Integer userId, String sex);下面的#{0}代表接收的是第一个参数#{1}代表是第二个参数以此类推。 select idgetUserresultMapBaseResultMapselect * from sys_user where id #{0} and sex #{1} /select第二种使用param 注解: public User getUser(Param(id)Integer userId, Param(sex)String sex);select idgetUser resultMapBaseResultMapselect * from sys_user where id #{id} and sex #{sex} /select第三种多个参数封装成对象 public User getUser(Param(“condition”) UserCondition condition);select idgetUser resultMapBaseResultMapselect * from sys_user where id #{condition.id} and sex #{condition.sex} /select15、Mybatis 动态 sql 有什么用有哪些动态 sql标签 MyBatis 中的动态 SQL是通过 OGNL表达式来判断条件根据不同的条件动态的生成 SQL 语句。Mybatis 提供了 9 种动态 sql 标签 where | if | foreach | choose | when | otherwise | bind。 16、Xml 映射文件中除了select|insert|updae|delete标签之外还有哪些标签 还有 resultMap、 parameterMap、 sql、 include、 selectKey加上动态 sql 的 9 个标签其中 sql为 sql 片段标签通过 include标签 refid 引入 sql 片段 selectKey为返回最新插入的id标签。 !-- 返回最新插入的id -- selectKey resultTypejava.lang.Integer keyPropertyid orderAFTER select last_insert_id() as id /selectKey17、Mybatis 中不同的 Xml 映射文件id 是否可以重复 不同的 Xml 映射文件如果都配置了namespace那么 id 可以重复如果没有配置 namespace那么 id 不能重复 原因就是 namespaceid 是作为 MapString, MapperStatement的 key值使用的如果没有 namespace就剩下 id那么id 重复会导致数据互相覆盖。 18、为什么说 Mybatis 是半自动 ORM 映射工具它与全自动的区别在哪里 Hibernate 属于全自动 ORM 映射工具使用 Hibernate 查询关联对象或者关联集合对象时可以根据对象关系模型直接获取所以它是全自动的。而 Mybatis 在查询关联对象或关联集合对象时需要手动编写 sql 来完成所以称之为半自动 ORM 映射工具。 19、一对一、一对多的关联查询 resultMap idClassesResultMap typecom.entity.Classesid propertyid columnc_id/result propertyname columnc_name/!—association 一对一关联查询 --association propertyteacher javaTypecom.entity.Teacher selectcom.mapper.TeacherMapper.getTeaByClassIdid propertyid columnt_id/result propertyname columnt_name//association!—collection 一对多关联查询 --collection propertystudent ofTypecom.entity.Student selectcom.mapper.StudentMapper.getStuByClassIdid propertyid columns_id/result propertyname columns_name/ /collection /resultMap20、什么是 MyBatis 的接口绑定有哪些实现方式 接口绑定有两种实现方式,一种是通过注解绑定就是在接口的方法上面加上Select、Update等注解里面包含 Sql 语句来绑定另外一种就是通过 xml 映射文件来绑定,映射文件里面的 namespace 必须为Mapper接口的全限定名。当 Sql 语句比较简单时候,用注解绑定, 当 SQL 语句比较复杂时候,用 xml 绑定,一般用 xml 绑定的比较多。 21、使用 MyBatis 的 mapper 接口调用时有哪些要求 1、Mapper接口的方法名和 mapper.xml中定义的每个 sql节点的id相同2、Mapper接口的方法和 xml 映射文件中定义的sql 节点的输入参数类型相同3、Mapper 接口的方法和xml 映射文件中定义的sql 节点的输出参数类型相同。 22、Mybatis 中的一级缓存与二级缓存 一级缓存是SqlSession级别的缓存默认是开启的同一个SqlSession执行相同的查询语句就会从缓存中读取而不走数据库如果两次操作之间出现写新增、修改、删除操作那么缓存的数据会全部清空下次要从数据库中读取再写入一级缓存避免了脏读二级缓存是namespace级别的缓存需要手动开启不同的SqlSession是可以共享缓存数据的 查询顺序先去查询二级缓存如果没有命中再去查询一级缓存如果也没有命中再去查询数据库然后将数据写入到一级缓存和二级缓存中。 23、MyBatis 的工作原理 1、读取配置文件mybatis-config.xml配置了MyBatis 的运行环境等信息例如数据库连接信息2、加载映射文件该文件是我们编写的操作数据库的 SQL 语句每个文件对应数据库中的一张表3、创建会话对象SqlSession该对象中包含了对数据库进行操作的所有方法4、生成SQL语句MyBatis 底层定义了一个Executor 接口来操作数据库它将根据方法传递的参数动态地生成需要执行的 SQL 语句同时负责查询和更新缓存5、创建MappedStatement对象该对象final类型对应mapper.xml中的一个SQLselect/update/insert/delete节点用于存储id、resultMap等信息。6、执行SQL返回结果将结果映射到Java对象中结果类型可以是 Map、 List 等集合也可以是基本数据类型。 24、物理分页和逻辑内存分页 物理分页是指查询数据库时在库里做了分页比如mysql 使用limit SQLServer 使用top Oracle使用rowNum逻辑内存分页是指查询数据库时返回所有数据到内存中然后通过代码获取分页数据。比如返回了所有数据并存储到List集合中因为List集合是有序的再根据索引获取需要的数据。list.subList(page-1* size, size)。 区别1.数据库压力物理分页每次都访问数据库逻辑分页只访问一次数据库对数据库造成的压力小2.内存空间物理分页只返回一部分数据逻辑分页返回所有数据到内存中占用的内存空间比较大3.适用场合物理分页主要用于数据量较大、更新频繁的场合逻辑分页主要用于数据量不大、数据稳定的场合。 25、Mybatis 是如何进行分页的分页插件的原理是什么 Mybatis 使用 RowBounds 对象来实现逻辑分页RowBounds中有2个字段offset偏移量和limit通过这2个字段从返回的结果集ResultSet中获取需要的数据。PageHelper是一个第三方实现物理分页的插件它会在mybatis执行sql之前进行拦截通过数据库类型datebaseType,添加不同的分页语句mysql是limitOracle是rowNum然后实现分页查询功能。 26、Mybatis延迟加载的实现原理是什么 Mybatis支持association和collection关联查询的延迟加载association 指的是一对一collection指的是一对多查询通过设置属性fetchTypelazy实现延迟加载默认是eager立即加载。它的原理是使用 CGLIB 创建目标对象的代理对象拦截了目标对象的get方法当调用get方法时会进入拦截器的invoke方法当发现需要延迟加载时就会执行之前保存好的SQL语句并调用对象的set方法赋值然后调用对象本身的get方法取值这就是延迟加载的基本原理。 一般在一对多的情况下使用延迟加载在一对一的情况下使用立即加载。
http://www.hkea.cn/news/14510155/

相关文章:

  • 快速建网站模板详情页设计论文
  • 做网站备案谁做中文企业网站模板
  • 昆明网站优化工具网站备案号在哪里看
  • 能够做网站的资质菏泽市建设职工培训中心网站
  • 微信投票网站制作展示型网站建设流程方案
  • 网站建设在哪块做wordpress th7好卡
  • php p2p网站建设网站建设如何提高浏览量
  • 网站建设的整体流程有哪些?兰州模板网站建设
  • dede分类信息网站电商网站建设实训要求
  • 沈阳网站建设专业公司山东省建设厅网站特种作业
  • 学建设网站及功能网页设计的背景与意义
  • 怎么样网站速度快全局右下角弹窗wordpress
  • 网站建设mfdos 优帮云从网上怎么做网站营销
  • 网站的建设方式济南网站建设 刘彬彬
  • 快速网站开发课程wordpress主机在哪里看
  • 江西省住房城乡建设厅网站网站转回国内
  • 合肥制作网站价格交互设计是做什么的
  • 1个服务器可以做多少个网站擦彩网站开发
  • 网站在哪里建立中国建设银行网上银行官网
  • 网站的平面设计图用ps做学校网站建设的重要性
  • net网站开发框架做电商的步骤
  • 房产如何做网站网站推送
  • 深圳企业做网站公司国外vps
  • 学校网站建设的意见怎么制作网站教程图片
  • 做手机网站用什么程序好昆明seo关键词
  • 网站空间稳定性wordpress 移动端不显示
  • 企业网站html模板男女做受视频网站
  • 中融木业网站是那个网站做的怎么注册公司官网
  • 广州网站建设定制价格做网站零成本
  • 岳阳市 网站建设做公众号和网站主页的区别