1. Mybatis下载

MyBatis 的版本可以通过"https://github.com/mybatis/mybatis-3/releases"网址下载。本篇使用 mybatis-3.3.0.zip(可根据需要自行下载)。

MySQL驱动Jar包下载:https://github.com/mysql/mysql-connector-j。

2. Mybatis概述

Mybatis是一款优秀的基于Java的持久层框架,它内部封装了JDBC,使开发者只需关注SQL本身,而不必再耗费精力去处理关于JDBC的繁琐的创建过程,大大提高了开发的效率。

原生JDBC编程六步曲:1.注册驱动2.获取数据库连接·3.获取数据库操作对象4.执行SQL语句5.处理查询结果集6.关闭资源Mybatis编程:1.配置主配置文件mybatis.xml2.配置映射文件mapper.xml3.编写接口程序

3.举个例子

  • 项目层次结构



java mybatis 保存blob 和 查询blob mybatis保存数据_xml


  • 实体类(Student)
public class Student {private Integer id;private String sname;//姓名private String sno;//学号public Student() {super();}public Student(String sname, String sno) {super();this.sname = sname;this.sno = sno;}//setter and getter}
  • 工具类(MyBatisUtil)
public class MyBatisUtil {private static SqlSessionFactory factory;public static SqlSession getSqlSession() throws Exception{if(factory == null){//1.读取配置文件InputStream input = Resources.getResourceAsStream("mybatis.xml");//2.创建SqlSessionFactory工厂factory = new SqlSessionFactoryBuilder().build(input);}//3.获取SqlSessionreturn factory.openSession();}}
  • DAO层及实现类(StudentDao/Impl)
public interface StudentDao {/*** 保存学生信息* @param studnet*/void saveStudent(Student studnet);}/**学生数据操作实现*/public class StudentDaoImpl implements StudentDao {private SqlSession sqlSession = null;/** 保存学生信息 */@Overridepublic void saveStudent(Student studnet) {try {sqlSession = MyBatisUtil.getSqlSession();//1.获取SqlSesssionsqlSession.insert("saveStudent", studnet);//2.保存sqlSession.commit(); //3.提交} catch (Exception e) {e.printStackTrace();} finally {if(sqlSession != null)//4.关闭资源sqlSession.close();}}}
  • 测试类
public class TestDemo {/**测试保存 */@Testpublic void saveStudent(){StudentDao studentDao = new StudentDaoImpl();Student stu = new Student("小明","20200704");studentDao.saveStudent(stu);}}
  • 日志配置文件
#log4j.rootLogger=trace, stdout#test是mapper配置文件定的命名空间log4j.logger.test=debug,stdoutlog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
  • 主配置文件
<?xml version="1.0" encoding="UTF-8"?>-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
  • mapper配置文件
<?xml version="1.0" encoding="UTF-8"?>-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">insert into student(sname,sno) values(#{sname},#{sno})
  • 运行结果
DEBUG [main] - ==> Preparing: insert into student(sname,sno) values(?,?)DEBUG [main] - ==> Parameters: 小明(String), 20200704(String)DEBUG [main] - <== Updates: 1

4.主配置文件详解

主配置文件名称可根据需要随意命名。其主要完成以下几个功能

1.)注册存放DB连接的四要素的属性文件。(也可以省略,直接在数据源中列出)

2.)注册实体类的全限定类名的别名。(可省略)

3.)配置Mybatis运行环境(数据源和事务管理器)。

4.)注册映射文件。

1.)注册存放DB连接的四要素的属性文件

注:标签的位置可以利用F2查看

2.)注册实体类的全限定类名的别名

注:上述两个别名的定义一般使用package方式,这样可以将该包中的所有类的简单类名指定为别名。而typeAlias需要对实体类逐一定义。

type:全限定性类名。alias:别名。name:包名。

3.)配置Mybatis运行环境(数据源和事务管理器)

  • environments标签:defalult属性指定当前的运行环境。 environment的id属性为当前定义的运行环境
  • transactionManager标签
  • dataSource标签

注:如果引入了DB属性配置文件value的值也可以写成${属性文件中的key值}

4.)注册映射文件的几种方式

第一种:需要对实体类逐一映射

第二种:从本地磁盘加载映射文件

第三种:仅适用于类路径下,1.DAO接口与映射文件在同一路径下。2.接口名与映射文件名相同。3.映射文件命名空间为接口全类名的情况.

mapper配置文件:StudentDao.xml:

insert into student(sname,sno) values(#{sname},#{sno})

第四种:自动扫描包下所有映射器

注意:需满足条件

1.dao使用mapper动态代理

2.DAO接口与映射文件在同一路径下。

3.接口名与映射文件名相同。

4.映射文件命名空间(namespace)为接口全类名的情况。