zoukankan      html  css  js  c++  java
  • mybatis(一)一个简单的demo以及日志的添加

    MyBatis学习总结(一)——MyBatis快速入门

    一、Mybatis介绍

      

      MyBatis是一个支持普通SQL查询存储过程高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

    二、Mybatis的快速入门

      先在eclipse中新建一个java工程,然后需要我们添加jar包

      【mybatis】
            mybatis-3.1.1.jar
      【MYSQL 驱动包】
          mysql-connector-java-5.1.7-bin.jar
      然后在数据库中建立一个简单的表,代码如下
    create database mybatis;
    use mybatis;
    CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, NAME
    VARCHAR(20), age INT);
    INSERT INTO users(NAME, age) VALUES('Tom', 12);
    INSERT INTO users(NAME, age) VALUES('Jack', 11);

      接下来开始添加mybatis中的配置文件conf.xml,在src目录下创建一个conf.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>
        <properties resource="db.properties"></properties>
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC" />
                <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
                <property name="username" value="root" />
                <property name="password" value="root" />
                </dataSource>
            </environment>
        </environments>
        <!-- 把映射文件引入到配置文件中  -->
        <mappers>
            <mapper resource="com/zhiyou100/wyf/mapper/UsersMapper.xml"/>
            <mapper resource="com/zhiyou100/wyf/mapper/OrdersMapper.xml"/>
        </mappers>
    </configuration>

    然后我们定义与表所对应的的实体类

    public class User {
    private int id;
    private String name;
    private int age;
    //get,set 方法
    }

    定义操作users表的sql映射文件userMapper.xml

    创建一个mapper包,专门用于存放sql映射文件,在包中创建一个userMapper.xml文件

    <?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">
    <!-- namespace:表示名称空间。现在的目的是区分id的. -->
    <mapper namespace="com.zhiyou100.wyf.mapper.UsersMapper">
    <!-- 根据id查询用户。id:标识该标签。
    parameterType:参数类型。可以写 也可以省略
    resultType:返回结果的类型。
    #{id}:类似于EL表达式。 解析id的值
    -->
    <select id="getUser" parameterType="int" resultType="com.zhiyou100.wyf.bean.Users">
    select * from users where id = #{id}
    </select>

    </mapper>

    在conf.xml文件中注册userMapper.xml文件

     编写单元测试来检验代码

    package com.test;
    
    import static org.junit.jupiter.api.Assertions.*;
    
    import java.io.Reader;
    
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    import org.junit.jupiter.api.AfterAll;
    import org.junit.jupiter.api.BeforeAll;
    import org.junit.jupiter.api.Test;
    
    import com.zhiyou100.wyf.bean.Users;
    
    class TestMy {
        static SqlSession session = null;
        static String str ="com.zhiyou100.wyf.mapper.UsersMapper";
        
        @BeforeAll
        static void setUpBeforeClass() throws Exception {
            //解析配置文件conf.xml
            Reader reader = Resources.getResourceAsReader("conf.xml");
            //获取SessionFactory对象
            SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
            session=sessionFactory.openSession();
        }
    
            @Test
        void testck() {
            Users users = session.selectOne(str+".getUser",2);
            System.out.println(users);
        }
    
        @AfterAll
        static void tearDownAfterClass() throws Exception {
            session.commit();
        }
    }
    
        

     提示:session.commit();  代表所有的sql语句在最后编译完成之后手动提交;

     可以添加日志来查看运行过程,引入jar包

    然后引入日志文件log4j.properties

    log4j.properties,
    log4j.rootLogger=DEBUG, Console
    #Console
    log4j.appender.Console=org.apache.log4j.ConsoleAppender
    log4j.appender.Console.layout=org.apache.log4j.PatternLayout
    log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
    log4j.logger.java.sql.ResultSet=INFO
    log4j.logger.org.apache=INFO
    log4j.logger.java.sql.Connection=DEBUG
    log4j.logger.java.sql.Statement=DEBUG
    log4j.logger.java.sql.PreparedStatement=DEBUG

     查询完成

     

    注意:mapper中的namespace的值要写接口的包名+类名

                select中的id必须和接口中的方法名一致,参数类型和类型也必须一致。

  • 相关阅读:
    去重合并两个有序链表之直接操作和Set集合操作
    MongoDB 操作
    Fork/Join框架与Java8 Stream API 之并行流的速度比较
    OpenResty(Nginx + Lua)常用操作
    Linux 常用命令,处理端口和Tomcat,mysql
    异常将上下文初始化事件发送到类的侦听器实例.[org.springframework.web.context.ContextLoaderListener] org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class p
    RSA算法的C++string实现(模幂算法和欧几里得算法的使用)后附思路
    数据库设计初探(宿舍管理系统)
    阿里云轻量级服务器上JDK及tomcat部署配置
    Spring RestTemplate 之post请求
  • 原文地址:https://www.cnblogs.com/yufengwang/p/11439529.html
Copyright © 2011-2022 走看看