Mybatis
1、认识mybatis
是对JDBC封装的ORM框架,目的简化JDBC的操作
ORM:
O:对象 java中实体类的对象
R:数据库中的表
M:映射
特点:
1、半自动框架:需要编写SQL语句
2、依赖数据库
2、搭建mybatis的使用环境
1、新建maven项目
2、添加依赖
<!--MyBatis核心依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!--MySql驱动依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
3、在resources目录新建xml配置文件
【说明】名字任意
dtd:文档类型定义,检查xml文件的内容是否正确
<!--配置数据库连接环境-->
<environments default="mysql2103">
<environment id="mysql2103">
<!--事务管理器:使用JDBC的事务-->
<transactionManager type="JDBC"></transactionManager>
<!--配置连接池信息-->
<dataSource type="org.apache.ibatis.datasource.pooled.PooledDataSourceFactory">
<!--驱动-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<!--url-->
<property name="url" value="jdbc:mysql://localhost:3306/empsys?useUnicode=true&characterEncoding=utf-8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
<environment id="mysql2104">
<transactionManager type=""></transactionManager>
<dataSource type=""></dataSource>
</environment>
</environments>
4、新建实体类
实体类的属性名最好和表中的列名一致,不区分大小写
确保有无参public的构造方法
5、mybatis基于接口的,创建接口
package com.qf.mybatis2103.dao;
import com.qf.mybatis2103.pojo.Emp;
public interface EmpDao {
//添加方法
public int addEmp(Emp emp);
}
6、编写接口所对应的映射文件
目前:resources下创建
<?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">
<mapper namespace="com.qf.mybatis2103.dao.EmpDao">
<!--编写接口中方法的映射
id:接口中方法的名字
parameterType:方法参数的类型
[注意】 insert update delete 无需设置返回值类型,默认返回int
-->
<insert id="addEmp" parameterType="com.qf.mybatis2103.pojo.Emp">
insert into emp(empno,ename,addr,job)
values
(#{empNo},#{eName},#{addr},#{job})
</insert>
</mapper>
7、在mybatis的配置文件中,配置映射文件
<!--把映射文件注册给mybatis-->
<mappers>
<mapper resource="EmpMapper.xml"></mapper>
</mappers>
3、添加操作
package com.qf.mybatis2103.test;
import com.qf.mybatis2103.dao.EmpDao;
import com.qf.mybatis2103.pojo.Emp;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class TestAdd {
public static void main(String[] args) {
SqlSession sqlSession=null;
try {
//1、读取mybatis配置文件
InputStream inputStream= Resources.getResourceAsStream("mybatis-config.xml");
//2、创建SqlSessionFactory对象
//SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
SqlSessionFactory factory=builder.build(inputStream);
//SqlSessionFactory的作用就是创建SqlSession
//SqlSession的作用:操作数据库
//3、创建SqlSession对象
sqlSession=factory.openSession();
//操作数据库
Emp wangYan=new Emp("qf001","王岩","辽宁省大连市","java开发工程师");
//通过sqlSession得到接口的实现类的对象
//mybatis利用jdk动态代理创建接口的实现类,继而创建对象
EmpDao empDao=sqlSession.getMapper(EmpDao.class);
//sqlSession执行的添加方法
int result=empDao.addEmp(wangYan);
//手动提交事务
sqlSession.commit();
System.out.println(result==1);
sqlSession.close();
inputStream.close();
} catch (IOException e) {
sqlSession.rollback();
e.printStackTrace();
}
}
}
【注意】insert upate delete 时需要提交事务:sqlSession.commit();
增删改查:见代码
4、优化配置
mapper映射文件只能存放在resources下,换路径则不能找到
如果想存在其他位置:dao下
pom.xml
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>*.xml</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
优化2:把数据库的配置信息存放在单独的文件中
创建db.properties文件
mydriver=com.mysql.jdbc.Driver
myurl=jdbc:mysql://localhost:3306/empsys?useUnicode=true&characterEncoding=utf-8
uname=root
pwd=root
在mybatis的配置文件中引入这个,通常是配置的开始位置
<!--引入外部配置文件-->
<properties resource="db.properties"></properties>
使用${}获取properties中的name对应的值
优化3:设置实体类包的别名配置
<!--配置别名-->
<typeAliases>
<!--每一个类都需要一个如下的配置,麻烦-->
<!-- <typeAlias type="com.qf.mybatis2103.pojo.Emp" alias="Emp"></typeAlias>-->
<!--扫描指定的包,mapper文件中使用的类都在此包下-->
<package name="com.qf.mybatis2103.pojo"/>
</typeAliases>
内容总结:
1、ORM框架 mybatis框架的认知
2、搭建mybatis项目
3、mybatis的配置文件—记下来
4、使用过程:接口 mapper文件
5、mybatis的执行过程
6、配置的优化