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基本入门

 

 

Mybatis的插入数据操作:

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

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

 

上一篇:MyBatis一级缓存


下一篇:MyBatis-底层源码解析-(详细),Java开发三年月薪才12K