搜索
首页Javajava教程mybatis的详细介绍

mybatis的详细介绍

Jul 17, 2017 pm 01:08 PM
mybatis

mybatis

usermapper.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.easytopit.demo.mybatis.mapper.UserMapper"><insert id="insert" useGeneratedKeys="true" keyProperty="id" >INSERT INTO et_user (username, truename, login_time) VALUES(#{username}, #{truename}, #{loginTime});</insert>
<update id="update">UPDATE et_user SET username=#{username}, truename=#{truename}, login_time=#{loginTime} WHERE id=#{id}</update>
<delete id="delete" parameterType="int">delete from et_user where id=#{id}</delete>
<select id="queryAll" resultType="com.easytopit.demo.mybatis.bean.User">SELECT id, username, truename, login_time loginTime FROM et_user LIMIT 10</select><select id="queryAllByPage" parameterType="java.util.HashMap"  resultType="com.easytopit.demo.mybatis.bean.User"><!-- SELECT id, username, truename, login_time loginTime FROM et_user LIMIT #{param1}, #{param2} -->   SELECT id, username, truename, login_time loginTime FROM et_user LIMIT #{pageOffset}, #{pageSize}</select><select id="query" resultType="com.easytopit.demo.mybatis.bean.User">SELECT id, username, truename, login_time loginTime FROM et_user WHERE id = #{id}</select></mapper>

namespace:
是为了解决相同名字的sql操作问题,有标识的作用
例如如果访问的路径是/add.do,如果namespace为/user,则访问路径为/user/add.do
select id="selectid"
id是为了唯一标识sql语句
resultType=java.util.map
标识当行记录的类型
// 手工查询(根据命名空间 - 命名空间与Mapper接口一致) -> com/easytopit/demo/mybatis/mapper/persistent/UserMapperNS.xml
users = session.selectList("NS.queryAll");
参数的三种方法
1:使用#{0}索引
2:使用参数#{param1} 从1开始
3:注解 @param(“name”)
jdk1.8支持参数注解,其他的不支持  参数名字和param(“”)名字一致
注意事项
#{} 实际上使用的jdbc的?占位符,是安全的
11:41:56.728 [http-bio-8080-exec-10] DEBUG c.e.c.m.AlbumMapper.deletelAlbum - ==>  Preparing: delete from ab_album where id = ?
${} 底层实际上使用的替换,要记得加单引号,是不安全的
11:47:29.831 [http-bio-8080-exec-10] DEBUG c.e.c.m.AlbumMapper.deletelAlbum - ==>  Preparing: delete from ab_album where id = 67
结果集映射
resulttype
映射一个具体的类
resultmap
先定义一个resultmap,然后映射
多对一映射
相当于先查询一个属性,然后自动使用属性作为参数调用其他的方法,再讲结果返回
column ''deptno ,property='dept',javaType=dept.class,one = @one(select = "命名空间.方法名")
一对多映射
懒加载
设置
需要的时候加载
出现的原因在于,应为一对多情况,有可能出现内存不足,所以当需要的时候,重新发起sql语句
insert selectkey标签
先通过sql语法,查询当前的列的最大值+1,放入到map中,然后insert into语句
ebe417cec8e6dd8aa4bcc9ae8674ba99
215bbcf8e2a79af2acd472141290b6da1e508d9ebd6e1154da98407ebec4b9dc
子主题 4
不建议使用二级缓存
相当于之前的全局变量
对查询安全
算法
fifo
将队列最右端的数据踢出去
lfu:least frequently used
使用次数最少的踢出去
也就是数据存到数据库到删除使用次数最少的
LRU:least recently userd
最近使用次数最少的
在指定时间内使用次数最少的
实现缓存
缓存的每行数据必须有唯一标识符(表中的主键),也就是map
如果有就从map中取,没有就添加
子主题 1

以上是mybatis的详细介绍的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
JVM如何处理操作系统API的差异?JVM如何处理操作系统API的差异?Apr 27, 2025 am 12:18 AM

JVM通过JavaNativeInterface(JNI)和Java标准库处理操作系统API差异:1.JNI允许Java代码调用本地代码,直接与操作系统API交互。2.Java标准库提供统一API,内部映射到不同操作系统API,确保代码跨平台运行。

Java 9影响平台独立性中引入的模块化如何?Java 9影响平台独立性中引入的模块化如何?Apr 27, 2025 am 12:15 AM

modularitydoesnotdirectlyaffectJava'splatformindependence.Java'splatformindependenceismaintainedbytheJVM,butmodularityinfluencesapplicationstructureandmanagement,indirectlyimpactingplatformindependence.1)Deploymentanddistributionbecomemoreefficientwi

什么是字节码,它与Java的平台独立性有何关系?什么是字节码,它与Java的平台独立性有何关系?Apr 27, 2025 am 12:06 AM

BytecodeinJavaistheintermediaterepresentationthatenablesplatformindependence.1)Javacodeiscompiledintobytecodestoredin.classfiles.2)TheJVMinterpretsorcompilesthisbytecodeintomachinecodeatruntime,allowingthesamebytecodetorunonanydevicewithaJVM,thusfulf

为什么Java被认为是一种独立于平台的语言?为什么Java被认为是一种独立于平台的语言?Apr 27, 2025 am 12:03 AM

javaachievesplatformIndependencEthroughThoJavavIrtualMachine(JVM),wodecutesbytecodeonyanydenanydevicewithajvm.1)javacodeiscompiledintobytecode.2)

图形用户界面(GUIS)如何提出Java平台独立性的挑战?图形用户界面(GUIS)如何提出Java平台独立性的挑战?Apr 27, 2025 am 12:02 AM

JavaGUI开发中的平台独立性面临挑战,但可以通过使用Swing、JavaFX,统一外观,性能优化,第三方库和跨平台测试来应对。JavaGUI开发依赖于AWT和Swing,Swing旨在提供跨平台一致性,但实际效果因操作系统不同而异。解决方案包括:1)使用Swing和JavaFX作为GUI工具包;2)通过UIManager.setLookAndFeel()统一外观;3)优化性能以适应不同平台;4)使用如ApachePivot或SWT的第三方库;5)进行跨平台测试以确保一致性。

Java开发的哪些方面取决于平台?Java开发的哪些方面取决于平台?Apr 26, 2025 am 12:19 AM

JavadevelovermentIrelyPlatForm-DeTueTososeVeralFactors.1)JVMVariationsAffectPerformanceNandBehaviorAcroSsdifferentos.2)Nativelibrariesviajnijniiniininiinniinindrododerplatefform.3)

在不同平台上运行Java代码时是否存在性能差异?为什么?在不同平台上运行Java代码时是否存在性能差异?为什么?Apr 26, 2025 am 12:15 AM

Java代码在不同平台上运行时会有性能差异。1)JVM的实现和优化策略不同,如OracleJDK和OpenJDK。2)操作系统的特性,如内存管理和线程调度,也会影响性能。3)可以通过选择合适的JVM、调整JVM参数和代码优化来提升性能。

Java平台独立性有什么局限性?Java平台独立性有什么局限性?Apr 26, 2025 am 12:10 AM

Java'splatFormentenceHaslimitations不包括PerformanceOverhead,versionCompatibilityIsissues,挑战WithnativelibraryIntegration,Platform-SpecificFeatures,andjvminstallation/jvminstallation/jvmintenance/jeartenance.therefactorscomplicatorscomplicatethe“ writeOnce”

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具