介绍:
它是一个插件,是一个持久化插件
帮我们简化数据库的操作
mybatis的好处就是可以自定义sql让sq变得很灵活
工程创建: mybatis-config.xml(这里是文件名随你起) 是mybatis的数据库和事务配置文件
数据库连接信息
事务管理
mapper 文件管理
每多一张表 就需要以下配置:
StudentMapper.xml 是针对student表做出的sql配置xml文件 //映射文件配置,数据库相关操作都在这个文件中
Student 类 是用来包装student表格的 POJO类 //对应的是你要操作的表,对应表中的相应数据
StudentMapper 接口 是对应studentMapper.xml 的功能接口 //实现 POJO类的接口
数据库连接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">
<configuration>
<environments default="test">
<environment id="test">
<!--这里是你要连接的数据库,对应的你要链接的数据库-->
<transactionManager type="JDBC"/>
<!--事务管理方式-->
<!--在 MyBatis 中有两种类型的事务管理器(也就是 type=”[JDBC|MANAGED]”):-->
<!--JDBC – 这个配置就是直接使用了 JDBC 的提交和回滚设置,它依赖于从数据源得到的连接来管理事务作用域。-->
<!--MANAGED – 容器来管理事务的整个生命周期-->
<dataSource type="POOLED">
<!--数据源 [UNPOOLED|POOLED|JNDI] -->
<!--UNPOOLED 不用数据链接池 每次访问数据 从新创建connection对象-->
<!--POOLED 使用连接池-->
<!--JNDI 容器提供的数据源-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&
characterEncoding=UTF-8&useSSL=false"/>
<!--这里是mysq5的链接方案-->
<property name="username" value="root"/>
<property name="password" value=""/>
<!--这里是数据员配置,要配置相关参数的话就加一列加入相关配置就行-->
</dataSource>
</environment>
</environments>
<mappers>
<!--映射文件就是数据库的查询,修改,更新,删除等自定义执行方案-->
<!--关联映射文件 每次多一个映射文件 就需要写段-->
<mapper resource="com/sun/mybatis/dao/MyabtisMapper.xml"/>
</mappers>
</configuration>
数据库连接方法包装:
package com.sun.mybatis;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class Mybatisconfig {
public static SqlSessionFactory sqlSessionFactory;
//这里用静态方法的原因是因为,用不了那么多链接一个就够了所以设置为静态类
static {
String resource = "com/sun/mybatis/mybatis_config";
//用静态块是因为只要掉用类,就会启动实例块中的代码
try {
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
}
package com.sun.mybatis;
//用get 和set方法包装即可
public class Student {
private int sid;
private String sname;
private String address;
private String email;
}
mybatis自定义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">
<mapper namespace="com.sun.mybatis.dao.StudentMappr">
<!--这里就是映射文件-->
<select id="selectUserAll" resultType="com.sun.mybatis.Student">
select * from student
</select>
<insert id="inster" parameterType="com.sun.mybatis.Student">
insert into student(sname,address,email) values(#{sname},#{address},#{email})
</insert>
</mapper>
映射文件对应的接口实现类:
package com.sun.mybatis.dao;
import com.sun.mybatis.Student;
import java.util.List;
public interface StudentMappr {
public Student inste(int id);
public int inster(Student student);
//这里传进来的是对象,因为插入是数据库相对应的数据
//这里注意发挥类型和参数
public List<Student> selectUserAll();
//查询放回值返回的是对象,因为有数据库相对应的对象
//这里的方法是集合查询 也就是可以多查
// 这里的Student代表返回出去的是都是Student对象
}
数据操作:
package com.sun.mybatis;
import com.sun.mybatis.dao.StudentMappr;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import java.util.List;
public class Teat {
public static void main(String[] args) {
SqlSessionFactory sqlSessionFactory = Mybatisconfig.sqlSessionFactory;
//创建sql绘画工厂对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//将会话工厂类给sqlsession工厂
StudentMappr studentMappr = sqlSession.getMapper(StudentMappr.class);
//创建动态实现类
//mybatis的运行过程,应该是
//1.创建工厂链接
//2.通过工厂sqlsession工厂类 中的方法在内存创建动态实现类
//3.通过映射文件找到相对应的实现类
//4.再通过实现类的名字找到相对应的实现方法,能找见方法是因为配置的映射中的标记名对应着的是实现类的方法名
List<Student> studentList=studentMappr.selectUserAll();
//这里是集合声明也是,集合相当于高级的数组所以也是同过循环取值
for (Student student : studentList) {
System.out.println(student.toString());
}
}
}