MyBatis基础
MyBatis获取参数的两种方式
#与$的区别
默认情况下,使用 #{} 参数语法时,MyBatis 会创建 PreparedStatement 参数占位符,并通过占位符安全地设置参数(就像使用 ? 一样)。
这样做更安全,更迅速,通常也是首选做法,不过有时你就是想直接在 SQL 语句中直接插入一个不转义的字符串。
比如 ORDER BY 子句,MyBatis 就不会修改或转义该字符串了。
增删改查标签
1.<select/>
从数据库查询并返回
下列为各属性用途
1)id:命名空间中标签的唯一标识
2)parameterType:指定执行SQL语句时所需参数的全限定类名或别名
3)resultType:指定SQL语句执行后返回值的权限定类名或别名
4)resultMap:表示外部resultMap的命名引用,与resultType不能同时使用
5)fiushCache:指定是否需要清空MyBatis本地缓存和二级缓存
5)useCache:设置二级缓存的开启和关闭
2.<insert/>
执行标签中的SQL语句,将返回插入记录的数量。
1)id:命名空间中标签的唯一标识
2)parameterType:指定执行SQL语句时所需参数的全限定类名或别名
3)keyProperty:指定POJO类的某个属性接收自动生成的主键
4)useGeneratedKey:表示执行添加记录之后是否获取到数据库自动生成的主键
3.<update/>
执行标签中的SQL语句后将返回更新的记录数量
1)id:命名空间中标签的唯一标识
2)parameterType:指定执行SQL语句时所需参数的全限定类名或别名
3)fiushCache:指定是否需要清空MyBatis本地缓存和二级缓存
4.<delete/>
1)id:命名空间中标签的唯一标识
2)parameterType:指定执行SQL语句时所需参数的全限定类名或别名
3)fiushCache:指定是否需要清空MyBatis本地缓存和二级缓存
SqlSession工具类
我们每次使用 MvBatis 操作数据库时,都需要通过 Resources 读取配置文件 mybatis-configxml 后,利用SglSessionFactoryBuilder 对象生成sglSessionFactory 对象,然后通过 SglSessionFactory 对象的 openSession()方法创建出 sglsession 对象,最后利用 sglsession 获取代理对象并利用其进行增删改查操作。而且,在每次执行数据操作后,都需要关闭 sqlsession。为了简化这些高度类似的例行操作,我们可编写 sglsession 工具类提升开发效率
1 2 3 4 | public class SglSessionuti1 ( private static SglSessionFactorysglSessionFactory = nul1;<br> //初始化 SglsessionEactory 对象<br>static { // MyBatis 核心配置文件名称<br>String fileName = "mybatis-config.xml";<br>try {<br>// 获取文件输入流<br>Inputstream inpotStream = Resources.getResourceAsstream(fileName) ; //创建 SqlsessionFactoryBuilder<br>SglsessionFactoryBuilder sglsessionFactoryBuilder = <br>new SqlSessionFactoryBuilder();<br>//创建 SqlsessionFactory<br>sglSessionFactory = sglSessionFactoryBuilder.build(inputstream);<br> }catch (IOException e) {e.printstackTrace();<br> }<br>}<br>// 获取 sglSession<br>public static Sglsession getsalsession() {<br>SqlSession sgSession = sqlSessionFactory.openSession(true);<br>return salSession;<br>}<br>// 关闭 SqlSession<br>public static void closeSqlSession(SqSession sqlSession){<br> if(sglSession!=nul1){<br> sqlSession.close();<br> }<br> }<br>} |
MyBatis全局配置文件
全局配置文件必须按照以下顺寻
configuration (配置)
properties(属性)
settings(设置)
typeAliases(类型别名)
typeHandlers(类型处理器objectFactory(对象工厂)
plugins(插件)
environments(环培配管)
environment (环境变量)
transactionManager (事务管理器)
dataSource (数据源)
databaseldProvider (数据库厂商标识)
mappers(映射器)
别名的常用方式
方式一
利用<typeAlias>标签配置某个类的别名。在该标签中,type 属性表示类的全限定名,alias属性表示该类别名,配置步骤及其使用方式如下
第一步: 配置别名
例如,将 com.cn.poio.User 的别名设置为 User; 相关代码如下
<typeAliases>
<!--配管类型别名方式 1-->
<typeAlias type "com.cnpojo.User" alias "User"> </typeAlias>
第二步:在映射文件中使用别名
例如,在映射文件的<select>标签中将resultIype 的值设定为 comcnpojo.User 的别名 User;相关代码如下:
<select id="queryUserByld" parameterType "int" resultlype="User">
select * from user where id = #{id}?
</select>
方式二
利用<typeAlias/>配置某个类的别名时可省略 alias 属性及其属性值。在此情况下,类的全限定名的别名为类名且不区分大小写。例如,com.cn.pojo.User 的别名为 User或 user,相关代码如下:
<typeAliases>
<!--配置类型别名方式 2-->
<typeAlias type="com.cnpojo.User"></typeAlias>
<typeAliases>
方式三
当 POJO 包下众多类都需要配置别名的情况下,前两种方式就存在明显的整端,操作繁琐配置复杂。为简化操作,在实际开发过程中我们常使用<package>的自动扫描为POJO 包下的所有类设置别名,配置方式及其使用方式如下。
第一步:配置别名
通过<package>标签的name 属性指定包名为该包中的所有类均设置别名。每个类的全限定名的别名为类名且不区分大小写,相关代码如下:
<typeAliases>
<!--配置类型别名方式 3-->
<package name "comcn.pojo"/>
<typeAliases>
第二步:在映射文件中使用别名
例如,在映射文件的<select>标签中将resultIype 的值设定为 com.cn.pojo.User 的别名 User.
<select id-"queryUserByld" parameterType "int" resultType "User">
select * from user where id = #{id}?
</select>
MyBatis运行原理
__EOF__

本文链接:https://www.cnblogs.com/3-DG/p/17832853.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现