SSM框架学习总结之路(二)

一、 MyBatis 对 Log4J 的支持

  1. Log4J是由Apache公司的免费开源日志处理类库
  2. 为什么需要之使用日志
    2.1 在项目中编写System.out.println();输出控制台,当项目发布Tomcat后,没有控制台(命令行界面能看到),不方便观察使用结果。
    2.2 log4j作用,不仅能把内容输出到控制台,还能把内容输出到文件中,便于后期寻找问题、维护等。
  3. log4j 输出级别
    3.1fatal(致命错误) > error(错误) > warn(警告) > info(普通信息) > debug(调试信息)
    3.2在log4j.properties 的第一行中控制输出级别
log4j.rootCategory=DEBUG, CONSOLE ,LOGFILE

表示内容: 输出级别bebug 在console(控制台)和logfile(日志文件)中显示

  1. 配置编写log4j.properties文件内容
log4j.rootCategory=DEBUG, 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} %m %n
log4j.appender.LOGFILE=org.apache.log4j.FileAppender 
log4j.appender.LOGFILE.File=D:/my.log 
log4j.appender.LOGFILE.Append=true 
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout 
log4j.appender.LOGFILE.layout.ConversionPattern=%C %m %L %n

  1. 在mybatis.xml配置文件中开启log4j
    5.1 保证有 log4j.jar包
    5.2在src下添加了log4j.properties
    5.3在配置文件中写上
    <settings>
    	<setting name="logImpl" value="LOG4J"/>
    </settings>
    
  2. log4j 中可以输出指定内容的日志(控制某个局部内容的日志级别)
    6.1 在总体级别调成Error 不输出无用信息
    6.2 再设置某个指定位置级别为DEBUG(com.mapper包下所有的类日志级别都为DEBUG)
log4j.rootCategory=ERROR,CONSOLE,LOGFILE
log4j.logger.com.mapper=DEBUG

二、parameterType属性

  1. 在XXXMappper.xml中等标签的parameterType可以控制参数类型
  2. SqlSession的selectList()和selectOne()的第二个参数和selectMap()的第三个参数都表示方法的参数.
  3. 在Mapper.xml中可以通过#{}获取参数
    3.1 使用索引,从0开始#{0}表示第一个参数
    3.2 使用#{param 1}来获取第一个参数
    3.3 如果只有一个参数(基本数据类型或String),mybatis对#{}里面的内容没有要求只要有内容即可.
    3.4如果参数是对象#{属性名}
    3.5如果参数是map写成#{key}
<select id="selById" 
	resultType="com.pojo.People" parameterType="int">
 	select * from people where id=#{0} 
</select>

  1. 区别#{} 和${}
    4.1#{}获取参数的内容支持 索引获取,param1 获取指定位置参数,并且SQL使用?占位符
    4.2 ${}字符串拼接不是用? ,默认找 ${内容},对应get/set方法,如果写数字,就是一个数字

  2. 如果在xml文件中出现"<",">",双引号 等特殊字符是可以使用XML文件转义标签(xml自身的)
    5.1 <![CDATA[ 内容 ]]>

  3. mybatis中实现分页写法
    3.1 ?不允许在关键字前后进行数字运算,需要在代码中计算完成后传递到mapper.xml中
    3.2 在java代码中计算

//显示几个 int pageSize = 2;
//第几页 int pageNumber = 2;
//如果希望传递多个参数,可以使用对象或 map 
Map<String,Object> map = new HashMap<>(); 
map.put("pageSize", pageSize); 
map.put("pageStart", pageSize*(pageNumber-1)); 
List<People> p = session.selectList("a.b.page",map);

   3.2  在mapper.xml中代码
<select id="page" resultType="com.pojo.People" parameterType="map"> 
	select * from people limit #{pageStart},#{pageSize} 
</select>

三、typeAliases別名

  1. 系统内置别名:把类型全部小写
  2. 给某个类起别名
    2.1 自定义 alias=“自定义”
<typeAliases> 
	<typeAlias type="com.pojo.People" alias="peo"/> 
</typeAliases>

2.2mapper.xml 中peo 引用People类

<select id="page" resultType="peo" parameterType="map"> select * from people limit #{pageStart},#{pageSize} </select>

  1. 直接给某个包下所有类起别名,别名为类名,不区分大小写
    3.1mapper.xml 中配置
<typeAliases> 
	<package name="com.pojo" /> 
</typeAliases>

3.2mapper.xml中通过类名引用

<select id="page" resultType="People" parameterType="map"> 
	select * from people limit #{pageStart},#{pageSize}
 </select>

四、MyBatis 实现增删改查

  1. 实现新增的步骤
    1.1 在mapper.xml 中提供<insert>标签,标签没有返回值类型
<insert id="ins" parameterType="People">
	 insert into people values(default,#{name},#{age})
  </insert>

1.2 通过session.insert()调用新增方法
int index1 = session.insert("a.b.ins", p);
 if(index1>0){
System.out.println("成功"); 
}else{
System.out.println("失败");
}

  1. 实现修改的步骤
    2.1在mapper.xml 中提供<update>标签
<update id="upd" parameterType="People">
 	update people set name = #{name} where id = #{id} 
 </update>
2.2 通过session.insert()调用修改方法
People peo = new People(); peo.setId(3);
peo.setName("王五"); 
int index = session.update("a.b.upd", peo); 
if(index>0){ 
System.out.println("成功"); }
else{ 
System.out.println("失败");
 } session.commit();
  1. 实现删除的步骤
    3.1在mapper.xml 中提供<delete>标签
<delete id="del" parameterType="int"> 
	delete from people where id = #{0}
 </delete>

3.2通过session.insert()调用删除方法
int del = session.delete("a.b.del",3);
if(del>0){ 
System.out.println("成功");
}else{ 
System.out.println("失败"); 
} session.commit();
  1. 概念复习
    4.1 功能 : 从引用程序角度出发,软件具有哪些功能
    4.2 业务 :完成功能时的逻辑,对应service中一个方法
    4.3 事务: 从数据库角度出发,完成业务时需要执行的SQL集合,统称为一个事务.

五、MyBatis 接口绑定方案及多参数传递

  1. 作用: 实现创建一个接口后把mapper.xml由mybatis生成接口的实现类,通过调用接口对象获取mapper.xml中编写的SQL

  2. SSM框架整合也是如此

  3. 实现步骤
    3.1 创建包名和接口名与mapper.xml中namespace相同,接口方法名和mapper.xml 标签的id属性相同
    3.2 在mybatis.xml中使用<package>进行扫描接口和mapper.xml

  4. 在mybatis,xml中<mappers> 使用<package>

<mappers>
	<package name="com.mapper"/> 
</mappers>

  1. 在com.mapper下新建接口
  2. 在com.mapper新建一个LogMapper.xml
    6.1 namespace 必须和接口全限定路径(包名+类名)一致
    6.2 id值必须和接口中方法名相同
    6.3如果接口中方法为多个参数 ,可以省略parameterType
<mapper namespace="com.mapper.LogMapper">
	 <select id="selAll" resultType="log"> 
		 select * from log 
	 </select>
  </mapper>

  1. 多参数实现办法
    7.1在接口中声明方法
    7.2在mapper.xml中添加使用#{}(0,1,2,)或者使用param1 、 parma2
<!--  接口中代码 -->
List<Log> selByAccInAccout(String accin,String accout);

<!-- 当多参数时,不需要写 parameterType -->
<select id="selByAccInAccout" resultType="log" >
	 select * from log where accin=#{0} and accout=#{1} 
 </select>
  1. 使用注解方式
    8.1 在接口中声明方法
/**
* mybatis 把参数转换为 map 了,其中@Param("key") 参数内容就是 map 的 value 
* */ 
List<Log> selByAccInAccout(@Param("accin") String accin123,
@Param("accout") String accout3454235);

8.2 在mapper.xml添加
<!-- 当多参数时,不需要写 parameterType -->
 <select id="selByAccInAccout" resultType="log" > 
	 select * from log where accin=#{accin} and accout=#{accout}
  </select>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值