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.举个例子
- 项目层次结构
- 实体类(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)为接口全类名的情况。