SSM之MyBatis/Mybatis增删改查代码怎么操作/MyBatis核心配置文件有哪些属性以及TypeAliases别名等这些标签怎么用

40 篇文章 0 订阅
8 篇文章 0 订阅

写在前面
记录自己的MyBatis学习之旅,若看不懂则建议先看前几篇博客,详细代码可在我的Gitee仓库ssm-learning克隆下载学习使用!

3.4 增删改查操作

3.4.1 查询操作

由于MyBatis快速入门操作里已经详细阐述了怎么进行查询操作,所以这里不再赘述。但对测试代码做一优化,减少冗余性,代码如图![[Pasted image 20211209202202.png]]

3.4.2 插入操作

3.4.2.1 配置映射文件

在UserMapper映射文件中加入插入语句,如下:

<!-- 增加操作-->  
<!--    id标明此方法是干什么的,parameterType标明要添加的对象,values中的占位符是对象的属性-->  
 <insert id="save" parameterType="com.demo.entity.User">  
 inseert into user values(#{id},#{name},#{password})  
    </insert>
3.4.2.2 测试

在测试类中编写测试代码,如下:

    // 插入操作  
 @Test  
 public void test2() {  
         User user = new User();  
		 user.setName("tom");  
		 user.setPassword("456");  
		 sqlSession = sqlSessionFactory.openSession();  
		 sqlSession.insert("userMapper.save",user);  
		// 注意 Mybatis默认事务是不自动提交的,需要手动来进行提交操作,不然插入数据无效  
		 sqlSession.commit();  
		 sqlSession.close();  
 }

其中,Mybatis默认事务是不自动提交的,需要手动来进行提交操作,不然插入数据无效
通过查询数据库User表可发现插入成功,如图![[Pasted image 20211209203429.png]]

3.4.2.3 注意事项
  • 插入语句用insert标签
  • 在映射文件中使用parameterType属性指定要插入的数据类型
  • SQL语句中年使用#{实体属性名}方式引入实体中的属性值
  • 插入操作使用的API是sqlSession.insert(“mapper命名空间.id”,实体对象)
  • 插入操作涉及数据库数据变化,所以要使用SQLSession对象显示提交的事务,即sqlSession.commit()

3.4.3 修改操作

3.4.3.1 编写UserMapper映射文件

同样操作,代码如下:

<!-- 修改操作-->  
<update id="update" parameterType="com.demo.entity.User">  
update user set name = #{name},password = #{password} where id = #{id}  
</update>
3.4.3.2 编写测试类

同样操作,代码如下:

public void test3() {  
   User user = new User();  
    user.setId(1001);  
    user.setName("Jerry");  
    user.setPassword("456");  
    sqlSession = sqlSessionFactory.openSession();  
    sqlSession.update("userMapper.update",user);  
    sqlSession.commit();
    sqlSession.close();  
}

修改之前数据库表如图![[Pasted image 20211209205731.png]]
修改后如图![[Pasted image 20211209205744.png]]

3.4.3.3 注意事项
  • 修改操作update标签
  • 修改操作使用的API是SqlSession.update(“mapper命名空间.id”,实体对象)
  • 涉及数据库数据变化,所以要使用SQLSession对象显示提交的事务

3.4.4 删除操作

3.4.4.1 编写UserMapper映射文件

同样操作,代码如下:

<!-- 删除操作-->  
<delete id="delete" parameterType="java.lang.Integer">  
delete   from user where id = #{id}  
   </delete>
3.4.4.2 编写测试类

同样操作,代码如下:

// 删除操作  
public void test4() {  
    sqlSession = sqlSessionFactory.openSession();  
    sqlSession.delete("userMapper.delete",1002);  
    sqlSession.commit();  
    sqlSession.close();  
}

修改之前数据库表如图![[Pasted image 20211209210511.png]]
修改后如图![[Pasted image 20211209210701.png]]

3.4.4.3 注意事项
  • 修改操作delete标签
  • 修改操作使用的API是SqlSession.delete(“mapper命名空间.id”,Object)
  • 涉及数据库数据变化,所以要使用SQLSession对象显示提交的事务
    库厂商表识
  • mappers 映射器

3.5 核心配置文件概述

3.5.1 MyBatis核心配置文件层级关系

核心配置文件中的标签如下所示

  • configuration配置
  • properties属性
  • settings 设置
  • typeAliases 类型别名
  • typeaHandlers 类型处理器
  • ObjectFactory 对象工厂
  • plugins 插件
  • environments环境
    • environment环境变量
      • transactionManager事务管理器
      • dataSource数据源
  • dataBaseIdProvider 数据库厂商表识
  • mappers 映射器

3.5.2 核心配置常用解析

3.5.2.1 environment标签

数据库环境配置,支持多环境配置
![[Pasted image 20211210162820.png]]
其中:事务管理器(transactionManager)类型有两种方式

  • JDBC:这个配置就是直接使用了JDBC的提交和回滚设置,它依赖于从数据源得到的连接来管理事务作用域
  • MANAGED:这个配置几乎没做什么,它从来不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如JEE的服务器的上下文)。默认情况下它会自动关闭连接,然而一些容器并不希望这样,所以需要将closeConnection属性设置为false来阻止它默认的关闭行为。

数据源(dataSource)也有两种方式

  • UNPOOLED,这个数据源的实现只是每次被请求时打开和关闭连接。
  • POOLED,这种数据源的实现利用“池”的概念将JDBC连接对象组织起来。
  • JNDI:这个数据源的实现是为了能在如EJB或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置以个JNDI上下文的引用。
3.5.2.2 mapper标签

该标签的作用是加载映射,主要有以下几种方式:

  • 使用相对于类路径的引用,例如:<mapper resource = "org/mybatis/builder/AutoMapper.xml"/>
  • 使用完全限定资源定位符(URL),例如:<mapper url = "file:///var/mappers/AutoMapper.xml"/>
  • 使用映射器接口实现类的完全限定类名,例如:<mapper class = "org.mybatis.builder.AutoMapper"/>
  • 将包内的映射器接口实现全部注册为映射器,例如:<package name = "org.mybatis.builder" />
    目前来时主要用第一种,后三种主要了解即可!
3.5.2.3 Properties标签

实际开发中,习惯将数据源的配置信息单独抽取成一个properties文件,该标签可以加载额外配置的properties文件。
![[Pasted image 20211210205241.png]]

3.5.2.4 typeAliases标签

类型别名是Java类型设置一个短的名字。
原来类型名称配置如下:

<select id = "findAll" resultType = "com.demo.entity.User ">
	select * from user
</select>

使用typeAliases,为com.demo.entuty.User定义别名为User,如下:

<!--typeAliases标签是在SqlMapperConfig.xml中配置-->
	<typeAliases >
		<typeAlias type = "com.demo.entity.User" alias = "user"/>
	</typeAliases>

	<select id = "findAll" resultType = "user ">
		select * from user
	</select>

另外,MyBatis已经默提供了一些变量的别名,如下表所示

数据类型别名
Stringstring
Integerint
Longlong
Booleanboolean
Doubledouble
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值