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__

本文作者3DG
本文链接https://www.cnblogs.com/3-DG/p/17832853.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   3DG  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示