1 Mybatis简介
1.1 原始jdbc操作
使用原始jdbc查询数据时: 使用原始jdbc插入数据时: 通过上述的示例可以看到原始jdbc操作存在的问题:
1,数据库频繁创建连接,释放连接会影响系统性能
2,sql语句在代码中硬编码,造成代码不易维护
实际应用中sql变化的可能性很大,sql的变化也需要更改Java代码
3,查询操作中,需要手动将结果集中的数据封装到实体中
插入操作中,需要手动将实体的数据设置到sql的占位符位置
对于上述的问题给出的解决方案:
1,使用数据库连接池初始化连接资源
2,将sql语句抽取到xml配置文件中
3,使用反射等技术,自动将实体与表的属性与字段进行映射
1.2 什么是Mybatis
Mybatis是一个Java持久层框架,内部封装了jdbc,使得开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动,创建连接,创建statement等繁杂的过程
Mybatis通过xml或注解的方式将要执行的各种statement配置起来,并通过java对象和statement中sql的动态参数进行映射生成最终的sql语句,最后Mybatis框架执行sql并将结果映射为java对象并返回,采用ORM思想解决了实体和数据库映射的问题,对jdbc进行了封装,屏蔽了jdbcAPI底层访问的细节,使得我们不需要和jdbcAPI打交道,就能完成对数据库的持久化操作
2 Mybatis快速入门
Mybatis的开发步骤:
1,添加Mybatis相关的jar包
2,数据库中创建表
3,编写与表对应的实体类
4,编写映射文件UserMapper.xml
主要编写sql语句
5,编写核心文件SqlMapConfig.xml
Mybatis的核心配置
6,编写测试类
1,添加Mybatis相关的jar包:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
2,数据库中创建表:
3,编写与表对应的实体类: 4,编写映射文件UserMapper.xml: 需要先在xml文件中添加映射配置文件的约束:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
映射文件的结构:
5,编写核心文件SqlMapConfig.xml: 需要在xml文件中添加核心文件的约束:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
6,编写测试类:
3 Mybatis的增删改查操作
3.1 插入操作
1,在UserMapper.xml中编写sql语句:
<insert id="save" parameterType="com.coisini.domain.User">
INSERT INTO user VALUES(#{id}, #{username}, #{password})
</insert>
2,测试: 在进行更新操作时(插入,修改,删除)时,需要提交事务,即sqlSession.commit(),因为Mybatis默认是不提交事务的
3.2 修改和删除
修改操作:
1,在UserMapper.xml中编写sql语句:
<update id="update" parameterType="com.coisini.domain.User">
UPDATE user SET username=#{username}, password=#{password} WHERE id=#{id}
</update>
2,测试:
删除操作:
1,在UserMapper.xml中编写sql语句:
<delete id="delete" parameterType="java.lang.Integer">
DELETE FROM user WHERE id=#{id}
</delete>
2,测试:
4 Mybatis的核心配置文件
4.1 environments标签
数据库环境的配置,支持多环境配置
其中事务管理类型transactionManager有两种:
1,JDBC: 直接使用JDBC的提交和回滚设置
2,MANAGED: 几乎什么都不做
数据源dataSource有三种:
1,UNPOOLED: 这个数据源的实现只是每次被请求时打开和关闭连接
2,POOLED: 这种数据源的实现利用"池"的概念将JDBC连接对象组织起来
3,JNDI: 这个数据源的实现是为了能在EJB或应用服务器这类容器中使用
4.2 mappers标签
该标签用于加载映射文件,加载方式有如下几种:
4.3 properties标签
开发中习惯将数据源配置信息单独抽取成一个properties文件,该标签可以加载properties文件
4.4 typeAliases标签
typeAliases即类型别名,为Java类型设置一个短的名字 在核心配置文件中配置别名,在映射文件中使用
|