zoukankan      html  css  js  c++  java
  • 2.第一个MyBatis程序

    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">

  • 相关阅读:
    一种分布式框架设计(四)
    读书笔记-《拆掉思维里的墙》
    [JS前端开发] js/jquery控制页面动态载入数据 滑动滚动栏自己主动载入事件
    Qt 5.3更新无数,更改C++控制台输出最为赞
    Guava ---- Ordering排序工具
    codeforces 558D Guess Your Way Out! II 规律
    Linux shell之打印输出
    细说Oracle中NULL值
    责任成本汇总表
    NSOperationQueue小结
  • 原文地址:https://www.cnblogs.com/xuzekun/p/7419061.html
Copyright © 2011-2022 走看看