zoukankan      html  css  js  c++  java
  • MyBatis(傻瓜式)框架

    log4j的配置文件:

    使用一个log4j.properties的配置文件,会设定log4j的设置信息,例如日志级别,日志输出方式,日志格式等等;

    # Set root category priority to INFO and its only appender to CONSOLE.

    # log4j.rootCategory=DEBUG, CONSOLE

    log4j.rootCategory=DEBUG, CONSOLE, LOGFILE

    # CONSOLE is set to be a ConsoleAppender using a PatternLayout.

    log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender

    log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout

    log4j.appender.CONSOLE.layout.ConversionPattern=- %m %c %l %d{yyyy-MM-dd HH:mm:ss}%n

    # LOGFILE is set to be a File appender using a PatternLayout.

    log4j.appender.LOGFILE=org.apache.log4j.FileAppender

    log4j.appender.LOGFILE.File=d:/test.log

    log4j.appender.LOGFILE.Append=true

    log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout

    log4j.appender.LOGFILE.layout.ConversionPattern=- %m %l%n

    4.3.3日志的输出格式

    4.3.4测试

    package com.bjsxt.test;

    import org.apache.log4j.Logger;

    public class TestLog4j {

    public static void main(String[] args) {

    // 获取日志对象

    Logger logger = Logger.getLogger(TestLog4j.class);

    // 五个日志级别分别对应五个输出方法, 方法名和级别名一致

    logger.fatal("系统崩溃了...");

    logger.error("系统崩溃了...");

    logger.warn("警告!");

    logger.info("消息~");

    logger.debug("调试...");

    }

    }

    1. MyBatis对log4j的支持

    5.1通过《settings》用于设置MyBatis在运行时的行为方式,例如:缓存,延迟加载日志等等;

    <!-- settings标签 -->

    <settings>

    <!-- 设置MyBatis使用log4j日志支持 -->

    <setting name="logImpl" value="LOG4J"/>

    </settings>

    5.2局部调整日志级别,定制日志的输出

    # 提高整体日志级别

    log4j.rootCategory=ERROR, CONSOLE

    # 单独设置SQL语句的输出级别为DEBUG级别

    # 方法级别

    # log4j.logger.com.bjsxt.mapper.UserMapper.selAll=DEBUG

    # 类级别

    # log4j.logger.com.bjsxt.mapper.UserMapper=DEBUG

    # 包级别

    log4j.logger.com.bjsxt.mapper=DEBUG

    30.<properties>

    6.1功能

    用于加载外部的properties文件

    <!-- properties加载外部文件 -->

    <properties resource="db.properties" />

    6.2使用方式

    获取properties文件中数据时,要通过${}的方式获取

    jdbc.driver=com.mysql.jdbc.Driver

    jdbc.url=jdbc:mysql://localhost:3306/java505

    jdbc.username=root

    jdbc.password=root

    <environments default="dev">

    <environment id="dev">

    <transactionManager type="JDBC" />

    <dataSource type="POOLED">

    <property name="driver" value="${jdbc.driver}"/>

    <property name="url" value="${jdbc.url}"/>

    <property name="username" value="${jdbc.username}"/>

    <property name="password" value="${jdbc.password}"/>

    </dataSource>

    </environment>

    </environments>

    31.《typeAliases》

    7.1 功能

    用于给java类型定义别名, 方便在配置文件中使用.

    7.2 使用方式

    a) User类型定义别名为u

    <!-- typeAliases给类型起别名 -->

    <typeAliases>

    <!-- User类起别名为u -->

    <typeAlias type="com.bjsxt.pojo.User" alias="u" />

    </typeAliases>

    b) <typeAlias>中, 可以省略alias属性, 表示类别名为类名, 大小写不敏感

    <typeAliases>

    <!-- User类起别名, 别名为user -->

    <typeAlias type="com.bjsxt.pojo.User" />

    </typeAliases>

    c) 可以通过<package>给整个包下的所有类定义别名为类名

    <typeAliases>

    <!-- 包下的所有类定义别名为类名 -->

    <package name="com.bjsxt.pojo" />

    </typeAliases>

    32.带参数的查询

    如果执行的是条件查询, 需要在调用方法时传参数进来, 此时, 可以在select标签中通过parameterType属性指定参数的类型而在SQL语句中, 可以通过#{}的方式获取参数.

    8.1 一个参数的查询

    例如根据id查询用户信息. 当只有一个参数时, #{}中可以任意填写.

    <!-- parameterType, 参数类型, 用于参数的传递 -->

    <select id="selById" resultType="user" parameterType="int">

    <!--

    #{}用于获取参数

    index, 索引, 0开始

    param+数字, param1, param2

     -->

    select * from t_user where id=#{param1}

    </select>

    @Test

    public void selById() {

    SqlSession session = null;

    try {

    session = new SqlSessionFactoryBuilder()

    .build(Resources.getResourceAsStream("mybatis-cfg.xml"))

    .openSession();

    User user = session.selectOne("com.bjsxt.mapper.UserMapper.selById", 2);

    System.out.println(user);

    } catch (IOException e) {

    e.printStackTrace();

    } finally {

    session.close();

    }

    }

    8.2 多个参数的查询

    多个参数传递时由于sqlSession中提供的查询方法只允许传入一个参数, 因此可以对多个参数进行封装可以使用对象或Map集合.

    8.2.1 封装为对象

    <select id="sel" resultType="user" parameterType="user">

    <!-- 如果参数是对象, 可以通过#{属性名}来获取 -->

    select * from t_user where username=#{username} and password=#{password}

    </select>

    @Test

    public void sel() {

    SqlSession session = null;

    try {

    session = new SqlSessionFactoryBuilder()

    .build(Resources.getResourceAsStream("mybatis-cfg.xml"))

    .openSession();

    User u = new User();

    u.setUsername("zhangsan");

    u.setPassword("123");

    User user = session.selectOne("com.bjsxt.mapper.UserMapper.sel", u);

    System.out.println(user);

    } catch (IOException e) {

    e.printStackTrace();

    } finally {

    session.close();

    }

    }

    8.2.1 封装为对象

    <select id="sel" resultType="user" parameterType="user">

    <!-- 如果参数是对象, 可以通过#{属性名}来获取 -->

    select * from t_user where username=#{username} and password=#{password}

    </select>

    @Test

    public void sel() {

    SqlSession session = null;

    try {

    session = new SqlSessionFactoryBuilder()

    .build(Resources.getResourceAsStream("mybatis-cfg.xml"))

    .openSession();

    User u = new User();

    u.setUsername("zhangsan");

    u.setPassword("123");

    User user = session.selectOne("com.bjsxt.mapper.UserMapper.sel", u);

    System.out.println(user);

    } catch (IOException e) {

    e.printStackTrace();

    } finally {

    session.close();

    }

    }

    8.2.2 封装为Map

    <select id="sel" resultType="user" parameterType="map">

    <!-- 如果参数是map, 可以通过#{key}来获取 -->

    select * from t_user where username=#{uname} and password=#{upwd}

    </select>

    @Test

    public void sel() {

    SqlSession session = null;

    try {

    session = new SqlSessionFactoryBuilder()

    .build(Resources.getResourceAsStream("mybatis-cfg.xml"))

    .openSession();

    Map<String, String> map = new HashMap<>();

    map.put("uname", "lisi");

    map.put("upwd", "123");

    User user = session.selectOne("com.bjsxt.mapper.UserMapper.sel", map);

    System.out.println(user);

    } catch (IOException e) {

    e.printStackTrace();

    } finally {

    session.close();

    }

    }

     

  • 相关阅读:
    使用命令xrandr设置当前系统的显示分辨率及显示的旋转脚本
    CODEFORCE 246 Div.2 B题
    Android数据的四种存储方式之SQLite数据库
    C语言默认參数值的实现
    Android开发环境搭建
    也谈OpenFlow, SDN, NFV
    解决设置redmineblacklog的按钮无效问题
    长方体的研究
    表面张力与浮力
    表面张力与浮力
  • 原文地址:https://www.cnblogs.com/bjsxt123/p/9011351.html
Copyright © 2011-2022 走看看