1.导入jar包
2.定义实体类
3.创建对应的表
4.定义Dao接口
1 public interface StudentDAO { 2 public void saveStudent(Student s); 3 }
5.定义映射文件
映射文件,简称为mapper,主要完成Dao层中SQL语句的映射。具体映射的配置,后面会详细讲解
映射文件名随意,一般放在 dao 包中,最好和Dao名称保持一致,我们这里写成mapper.xml
这个mapper.xml 文件的约束文件可以从 官方文档找到,
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 5 <mapper namespace="test"> 6 <!-- parameterType 可以省略 --> 7 <insert id="insertStudent"> 8 insert into student (age,name,score) values (#{age},#{name},#{score}); <!-- #{}中写入的是Student类的属性名 --> 9 </insert> 10 </mapper>
注意:#{ }中写入的是Student类的属性名
对于 parameterType 属性,框架会自动根据用户执行的SqlSession方法中的参数自动检测到,所以parameterType 可以省略
6.定义主配置文件
主配置文件的约束文件同样从文档中找到
主配置文件名也可以随意命名,这里写成 mybatis.xml
主配置文件在这里完成两方面的功能:
1.配置MyBatis运行环境 2.注册映射文件
7.定义Dao实现类
1 public class StudentDAOImpl implements StudentDAO { 2 3 private SqlSession sqlSession; 4 @Override 5 public void saveStudent(Student s) { 6 try { 7 //1.读取配置文件 8 InputStream inputStream = Resources.getResourceAsStream("mybatis.xml"); 9 //2.创建SqlSessionFactory对象 10 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream); 11 //3.创建SqlSession对象 12 sqlSession = factory.openSession(); 13 //4.执行操作 14 sqlSession.insert("insertStudent", s); 15 //5.SqlSession提交 16 sqlSession.commit(); 17 } catch (IOException e) { 18 e.printStackTrace(); 19 } finally { 20 //6.SqlSession关闭 21 if(sqlSession != null) { 22 sqlSession.close(); 23 } 24 } 25 } 26 27 }
8.定义测试类
1 public class MyTest { 2 3 @Test 4 public void testAdd() { 5 Student s = new Student(); 6 s.setAge(25); 7 s.setName("xzk5"); 8 s.setScore(99); 9 10 StudentDAO studentDAO = new StudentDAOImpl(); 11 studentDAO.saveStudent(s); 12 } 13 }
9.添加日志控制文件
MyBatis 使用 Log4j 进行日志处理,而 Login4j2 对其支持并不好,
所以在 MyBatis 中需要 将 log4j.properties 放入到项目的 src 目录下。
若将日志级别设置为 debug,则可以显示出所执行的 SQL 语句、参数值、对 DB 的影响 条数等信息。若将级别设置为 trace,则还可显示出查询出的每条记录的每个字段名及值。
不过,需要注意的是,若日志对象使用根日志对象 rootLogger,则会输出太多的信息
1 ### direct log messages to stdout ### 2 log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender 3 log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout 4 log4j.appender.CONSOLE.Target=System.out 5 log4j.appender.CONSOLE.layout.ConversionPattern= %5p %c:%L - %m%n 6 7 log4j.logger.test=DEBUG,CONSOLE
在 MyBatis 中,可以指定要输出日志的工作空间 namespace 的名字。此时,只会输出该namespace 下执行的 SQL 的日志内容
我们这里的 namespace 是 test <mapper namespace="test">