1.创建一张表和与表对应的实体类
2.导入MyBatis jar 包,mysq数据驱动包
<!--MyBatis 包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.2</version>
</dependency>
<!--mysql数据驱动包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
3.创建MyBatis全局配置文件
<?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">
<configuration>
<!--添加属性文件-->
<properties resource="config.properties"></properties>
<typeAliases>
<package name="com.ffyc.mybatisdemo.model"></package>
</typeAliases>
<environments default="development">
<!--配置连接数据库信息-->
<environment id="development">
<transactionManager type="JDBC"/>
<!--事务管理使用jdbc是默认的,事务是一次对数据的操作过程的管理,必须满足原子性-->
<dataSource type="POOLED">
<property name="driver" value="${driverName}"/>
<!--com.mysql.cj.jdbc.Driver-->
<property name="url" value="${url}"/>
<!--jdbc:mysql://127.0.0.1:3306/ssmdb?serverTimezone=Asia/Shanghai-->
<property name="username" value="${userName}"/>
<!--数据库账号-->
<property name="password" value="${password}"/>
<!--数据库密码-->
</dataSource>
</environment>
</environments>
</configuration>
4.创建sql映射文件
<?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">
<!--namespace="com.ffyc.admin" 命名空间 必须唯一-->
<!--<mapper namespace="com.ffyc.admin">-->
<!--使用接口与xml进行绑定 namespace的值与接口类路径相同-->
<mapper namespace="com.ffyc.mybatisdemo.Dao.AdminDao">
</mapper>
5.定义接口
在接口中定义方法
public interface UserDao{
}
6.测试MyBatis
//读取配置文件
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
//创建SqlSessionFactory
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
//创建SqlSession
SqlSession sqlSession = sessionFactory.openSession();
//获得接口代理对象
sqlSession.getMapper(接口.class);
sqlSession .close();//关闭
注:
SqlSessionFactory接口:
使用SqlSessionFactory来创建SqlSession,一旦创建SqlSessionFactory就会在整个应用过程中存在,由于创建开销太大,所以没必要去销毁在创建
SqlSession接口:
该接口中封装了对数据库操作的方法,与数据库会话完成后关闭会话
MyBatis—Dao层Mapper接口化开发
Mapper接口开发方式只需要编写Mapper接口,由Mybatis框架创建接口的动态代理对象,使用sqlsession.getMapper(接口.class) 获得代理对象
规范:
Mapper.xml文件中的namespace与mapper接口的类路径相同
Mapper接口方法名和Mapper.xml中定义的每个statement的id相同
Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql的parameterType的类型相同
Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同
Mybatis日志
配置日志
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
参数传递
1.单个参数传递
User selectUser(int id);
2.多个参数使用@Param("id")绑定
User selectUsers(@param("id") int id,@param("name") String name)
<select id="selectUsers" resultType="User">
select id, username, password from users where id = #{id} and username=#{name}
</select>
如果传入一个复杂的对象,就需要使用parameterTypr参数进行类型定义
<insert id="insertUser" parameterType="User">
insert into users (id, username, password)
values (#{id}, #{username}, #{password})
</insert>