什么是Mybatis
Mybatis是一个mysql的映射框架,提供的数据库的增强能力,是一个增强的jdbc,使用Mybatis让开发人员集中精神写SQL就可以了
不需要关心Connection Statement Result的创建销毁SQL的执行
使用Mybatis以后 不需要在自己jdbc工具类了
基本结构 maven项目
将你需要书写的配置写在xml文件中 配置文件写在resources文件夹中
1.数据库的属性配置文件 吧数据库连接信息放到一个单独的文件中 和Mybatis主配置文件分开
目的是方便修改 保存 处理多个数据库的信息
步骤:1.在resources目录中定义一个属性配置文件xxx.properties
在属性配置文件中 定义数据 格式是:key=value
例如:jdbc.drive = com.mysql.jdbc.Driver
2.在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>
<environments default="mydev">
<environment id="mydev">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/bjpowernode"/>
<property name="username" value="用户名"/>
<property name="password" value="密码"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com\one\dao\StudentDao.xml"/>
</mappers>
</configuration>
同时你的SQL语句查询都写在xml中 写在你的dao层 通过接口调用你的SQL语句
2.mapper文件 使用package指定路径
//第一种 普通方式 但是xml如果很多的话 很麻烦 不方便维护
//第二种方式 打包 使用包名
//name:xml文件所在的包名 这个包中所有的xml文件会一次性加载给Mybatis
/*
使用要求:1.mapper文件名称需要和接口文件名称一样
2.mapper文件和dao接口需要在同一个目录
*/
接口
package com.one.dao;
import com.one.domain.Student;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface StudentDao {
public List<Student> selectStudents();
public int insertStudent(Student student);
public List<Student> selectStudents(@Param("name") String name);
}
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">
<mapper namespace="com.one.dao.StudentDao">
<!-- namespace和id 是 自给起的名字 爱起啥就起啥 但要保证其唯一性 和路径啥玩意的无关
id:你要执行的SQL语法的唯一标识 Mybatis会使用这个id的值来找到要执行的SQL语句
可以自定义 但是要求你使用接口中的方法名称
resultType:表示结果类型 是SQL语句执行后得到resultset 遍历这个resultset得到java对象的类型
值写的类型的全限定名称
-->
<select id="selectStudents" resultType="com.one.domain.Student">
select id,name,email,age from Student order by id
</select>
<insert id="insertStudent">
insert into student values (#{id},#{name},#{email},#{age})
</insert>
</mapper>
<!--
sql映射文件 写SQL语句的 Mybatis会执行这些SQL
1.指定约束文件
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
约束文件作用:限制 检查当前文件中出现的标签 属性必须符合Mybatis要求
2.mapper 是当前文件的根标签 必须的
namespace 叫做命名空间 唯一值的 可以是自定义的字符
要求你使用dao接口的全限定名称
3.在当前文件中 可以使用特定的标签 表示数据库的特定操作
<select> 表示执行查询 select语句
<update> 表示更新数据库操作 就是在update标签中
<insert delete>同上
-->
#{值}:动态传递你接口中传递的值
表示执行查询 select语句
表示更新数据库操作 就是在update标签中
同上
–>
#{值}:动态传递你接口中传递的值