JavaWeb学习之路——SSM框架之Mybatis(三)

24 篇文章 0 订阅
8 篇文章 0 订阅

数据库配置和相关类创建看上篇:JavaWeb学习之路——SSM框架之Mybatis(二)

https://blog.csdn.net/kuishao1314aa/article/details/83270578

这里说明下log4j日志用法和参数传递到xml文件中

1.目录结构

 

2.目录解释:

src下:

pojo包:写java文件

serverlet包:写serverlet文件

service包:写接口和它的实现类

mapper包:用来配置数据库文件

WebContent:项目的根目录,放置jsp文件和资源文件包

 

3.路径解释

绝对路径:路径中以/开头的都叫做全路径,从根目录(WebContent)出发找到其他资源的过程

相对路径:不以/开头都是相对路径,相对路径是从当前资源出发找到其他资源的路径

请求转发/表示WebContent目录,重定向<a herf="">、src下/表示tomcat的webapps文件夹根目录

 

4.log4j

(1)介绍

一个apache推出的开源免费日志处理的类库。

在项目中编写System.out.println();输出到控制台,项目发布到tomacat后,没有控制台,不容易观察输出结果。

log4j作用,不仅能把内容输出到控制台,还能输出到文件

使用方法:

导入log4j-xxx.jar;

在src下新建log4j.properties(不能改变路径和名称);

 

(2)配置文件

log4j输出级别:五个级别——fatal(致命错误)>error(错误)>warn(警告)>info(普通信息)>debug(调试信息)

在log4j第一行中控制输出级别、输出目的地,写谁往哪里输出,先下面为往控制台和文件输出普通信息

%C为输出类信息,

log4j.rootCategory=INFO, CONSOLE,LOGFILE

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

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

log4j.appender.CONSOLE.layout.ConversionPattern=%C %d{YYYY-MM-DD hh:mm:ss} %p %m %n

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

log4j.appender.LOGFILE.File=axis.log

log4j.appender.LOGFILE.Append=true

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

log4j.appender.LOGFILE.layout.ConversionPattern=%C %m %L %n

 

 

输出结果:

INFO级别:

 

DEBUG级别:

 

(3)控制台显示输出

在mybatis全局配置文件中通过<settings>标签来控制mybatis全局开关

  <settings>

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

  </settings>

前提:src下有配置文件log4j.properties,lib下有log4j.jar

可以控制输出内容级别,将mapper.xml中a.b.c的内容设置为DEBUG类别

包级别,<mapper > namespace属性中最后的类名

log4j.logeer.a.b.c=DEBUG

 

5.mybatis参数传递

(1).parameterType属性:在xxxMapper.xml中设置相应的参数类型、sql语句中写参数位置,

用parameterType表示参数,#{0}表示获取参数内容,里面从0开始,也可以使用#{param1}表示第一个参数,只有一个参数

则对#{}内容没有要求

  <select id="selById" resultType="com.likui.pojo.Flower" parameterType="int">

   select * from flower where id=#{0}

  </select>

 

(2).SqlSession的selectList()和selectOne()的第二个参数和selectMap()的第三个参数都表示方法的参数

传递参数来返回对应结果:

     Flower flower=session.selectOne("a.b.selById",2);

          System.out.println(flower.getId()+"\t\t"+flower.getName()+"\t\t"+

                     flower.getPrice()+"\t\t"+flower.getProduction());

控制台输出DEBUG:

 

(3).#{}和${}区别

#{}java中使用的是参数内容,支持索引、param1获取指定位置,并且SQL语句中使用?占位符处理

${} java文件中使用的字符串拼接,不适用?占位符,默认找${}中的内容的get/set方法,如果使用的是数字,则不表示位置

比较常用的是#{}

  <select id="selById" resultType="com.likui.pojo.Flower" parameterType="com.likui.pojo.Flower">

   select * from flower where id=${id}

  </select>
 Flower flower2=new Flower();

 flower2.setId(1);

 Flower flower=session.selectOne("a.b.selById",flower2);

 

(4).传递多个参数类型

使用Map集合或者对象来传递:

xml文件中配置参数

map中#{}中写map对应的key值

<select id="c" resultType="com.likui.pojo.Flower" parameterType="map">

  select * from flower where id=#{id} and name=#{name}

  </select>

 

java文件中传递参数:

Flower flower2=new Flower();

flower2.setId(1);

flower2.setName("牡丹");

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

map.put("id", flower2.getId());

map.put("name", flower2.getName());

Flower flower=session.selectOne("a.b.c",map);

6.别名-typeAliases

在mybatis.xml数据库配置文件中写上别名:

  <typeAliases>

  <typeAlias type="com.likui.pojo.Flower" alias="flo"/>

  </typeAliases>

然后在mapper.xml数据库语句中可以用上类的别名来代替相应类

 <select id="c" resultType="flo" parameterType="map">

  select * from flower where id=#{id} and name=#{name}

  </select>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值