ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Mybatis基本入门

2021-09-30 11:32:52  阅读:116  来源: 互联网

标签:基本 xml 入门 实体 语句 sqlSession sql Mybatis 属性


原始JDBC存在如下问题:

  ① 数据库连接创建、释放频繁造成系统资源浪费从而影响系统性能
  ② sql 语句在代码中硬编码,造成代码不易维护,实际应用 sql 变化的可能较大,sql 变动需要改变java代码。
  ③ 查询操作时,需要手动将结果集中的数据手动封装到实体中。插入操作时,需要手动将实体的数据设置到sql语句的占位符位置
上述问题给出的解决方案:

  ① 使用数据库连接池初始化连接资源
  ② 将sql语句抽取到xml配置文件中
  ③ 使用反射、内省等底层技术,自动将实体与表进行属性与字段的自动映射

Mybatis开发步骤:

  ①添加mybatis坐标依赖

  ②创建实体类及对应表

  ③编写映射文件xxxMapper.xml

  ④配置核心文件SqlMapConfig.xml

 1 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN“ "http://mybatis.org/dtd/mybatis-3-config.dtd">
 2 <configuration>
 3     <environments default="development">
 4         <environment id="development">
 5             <transactionManagertype="JDBC"/>
 6             <dataSourcetype="POOLED">
 7                 <property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql:///test"/>
 8                 <property name="username" value="root"/><property name="password" value="root"/>
 9             </dataSource>
10         </environment>
11     </environments>
12     <mappers> <mapper resource="com/itheima/mapper/UserMapper.xml"/> </mappers>
13 </configuration>

测试代码:

 1 // 加载核心配置文件
 2 InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
 3 // 获得 sqlSession 工厂对象
 4 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
 5 // 获得 sqlSession 对象
 6 SqlSession sqlSession = sqlSessionFactory.openSession();
 7 // 执行 sql 语句
 8 List<User> userList = sqlSession.selectList("userMapper.findAll");
 9 // 打印结果
10 System.out.println(userList);
11 // 释放资源
12 sqlSession.close();

mybatis映射文件概述:

 

 

Mybatis的插入数据操作:

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

#{实体属性名}方式引用实体的属性值同样也用在update,delete

 

标签:基本,xml,入门,实体,语句,sqlSession,sql,Mybatis,属性
来源: https://www.cnblogs.com/elian91/p/15355946.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有