配置好环境后,工程目录结构基本出来了
此时编写日志输出环境配置文件,打开.properties文件
写入以下信息:
log4j.rootLogger = DEBUG, stdout
# 开发时选择DEBUG(会在控制台打印底层运行信息),生产环境设置为INFO(控制台打印出程序运行的主要步骤信息)或者ERROR(打印出不影响程序运行的错误事件),后面的stdout代表将xxx(此处为DEBUG)的日志信息输出到stdout参数所指定的载体中。
#Console output
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
# 设置名为stdout的输出载体类型,目前有:ConsoleAppender(控制台),FileAppender(文件),DailyRollingFileAppender(每天产生一个日志文件),RollingFileAppender(文件大小到达指定大小时产生一个新文件),WriterAppender(将日志信息以流格式发送到任意指定的地方),此处是打到Eclipse的控制台,所以选ConsoleAppender
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
# 设置载体界面是什么布局,目前有:HTMLLayout(以HTML表格形式布局),PatternLayout(可以灵活指定布局模式),SimpleLayout(包含日志信息级别和信息字符串),TTCCLayout(包含日志时间,线程,类别等信息)
log4j.appender.stdout.layout.ConversionPattern = %5p [%t] -%m%n
#由于上一处已经选择了PatternLayout,所以要指定打印信息的具体格式。大致配置元素如下:
%m 输出代码中指定的信息
%p 输出优先级,即DEBUG,INFO,WARN,ERROR和FATAL
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属类名
%t 输出产生该日志事件的线程名
%n 换行
%d 输出日志的日期或事件可以指定格式 如%D{yyyy MMM dd HH:mm:ss,SSS}输出类似xxxx年x月x日 xx:xx:xx,xxx
%l 输出日志事件发生的位置,包括类目名,发生的线程,以及代码行数
连接池配置文件即SqlMapConfig.xml,首先写好文件头xml的版本信息以及编码格式信息,为了符合DTD文档定义类型,前2行XML配置信息为:
然后。所有的配置应位于configuration标签对中,在这之中的配置标签必须按照先后顺序配置
先在configuration标签对中先配置setting标签对,配置日志输出模式logImpl为LOG4J,Mybatis的环境信息配置在environment标签对中,里面允许出现多个environment标签对,每一个单独的environment标签对代表一个单独的数据库配置环境transcationManager标签配置的是Mybatis的事务控制类型,而dataSource标签配置的是数据库连接信息,包含多个property标签,用来放driver,数据库连接地址url,用户名,密码。
最终大致如下:
<configuration>
<setting>
<setting name="logImpl" value="LOG4J"/>
setting>
<environment id="development">
<transcationManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/databasename?serverTimezone=GMT&characterEncoding=utf-8"/>
<property name="username" value="root"/>
<property name="password" value="xxxx"/>
dataSource>
environment>
configuration>
除此之外该文件还应该包含Mapper映射的文件声明以及别名定义等功能,但后面SpringMVC时大部分的信息都可以交给Spring来管理。
即编写UserMapper.xml(这里是举个例子),文件头仍然为DTD类型,和SqlMapConfig.xml是一样的头。
然后所有的配置应在mapper标签中,mapper标签有namespace属性,用于对SQL进行分类化管理,实现不同业务的SQL隔离。(namespace还有重要的作用,以后再写)。
SQL有增删改查这几大类,对应的标签对为insert,detele,update,select,如果这里配置一个查询语句,选择select标签,每一个SQL配置标签都有:
此时的大致内容如下:
<mapper namespace="test">
<select id="findUserById" paramterType="int" resultType="cn.com.mybatis.po.User">
SELECT * FROM USER WHERE id=#{id}
select>
mapper>
id为findUserById,因为SQL映射配置文件都会被解析并封装到mappedStatement对象中,为了调取相应的SQL,需要唯一的标识,所以该属性即为Statement的id。
parameterType为int,代表指定输出参数为int。
resultType代表每单条记录将映射成名为User的Java对象。
select标签中的即为查询语句#{}代表占位符,#{id},id代表接受输入参数的名称。若parameterType为简单类型(int,string,long,Date等),#{}中的值可以是任意数据
编写完成之后,在SqlMapConfig.xml的configuration标签最后且必须是加入下列信息:
<mappers>
<mapper resource="sqlmap/UserMapper.xml"/>
mappers>