一.Log4J

1.由apache推出的开源免费日志处理的类库.

2.为什么需要日志:

           2.1在项目中编写System.out.println();输出到控制台,当项目发布到tomcat后,没有控制台(在命令行界面能看见.),不容易观察一些输出结果.

         2.2log4j作用,不仅能把内容输出到控制台,还能把内容输出到文件中.便于观察结果.

3.使用步骤:

        3.1导入log4j-xxx.jar

        3.2在src下新建log4j.properties(路径和名称都不允许改变)

                  3.2.1ConversionPattern:写表达式3.2.2log4j.appender.LOGFILE.File文件位置及名称(日志文件扩展名.log)

log4j.rootCategory=ERROR, CONSOLE 

log4j.logger.a.b=DEBUG

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=-%p-%d{yyyy/MM/dd HH:mm:ss,SSS}-%l-%L-%m%n


log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=D:/axis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=-%p-%d{yyyy/MM/dd HH:mm:ss,SSS}-%l-%L-%m%n

4.log4j输出级别

         4.1fatal(致命错误)>error(错误)>warn(警告)>info(普通信息)>debug(调试信息)

         4.2在log4j.properties的第一行中控制输出级别

数据库链接java输出出现乱码_java-ee

5.log4j输出目的地

        5.1在一行控制输出目的地 

数据库链接java输出出现乱码_数据库链接java输出出现乱码_02

6.pattern中常用几个表达式

6.1%C包名+类名

6.2%d{YYYY-MM-ddHH:mm:ss}时间

6.3%L行号

6.4%m信息

6.5%n换行

二.<settings>标签

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

           2.在mybatis.xml中开启log4j

                          2.1必须保证有log4j.jar

                         2.2在src下有log4j.properties 

<!--配置log4j  -->
<settings>
   <setting name="logImpl" value="LOG4J"/>
</settings>

3.log4j中可以输出指定内容的日志(控制某个局部内容的日志级别)

               3.1命名级别(包级别):<mapper>namespace属性中除了最后一个类名例如namespace=”com.bjsxt.mapper.PeopleMapper”其中包级别为com.bjsxt.mapper,需要在log4j.propeties中

                       3.1.1先在总体级别调成Error不输出无用信息

                      3.1.2在设置某个指定位置级别为DEBUG

数据库链接java输出出现乱码_面试_03

3.2类级别

        3.2.1namespace属性值,namespace类名

3.3方法级别

        3.3.2使用namespace属性值+标签id属性值

三,parameterType属性

1.在XXXMapper.xml中<select><delete>等标签的parameterType可以控制参数类型

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

   2.1实例:

 

Peoplep=session.selectOne("a.b.selById",1);System.out.println(p);

2.2在Mapper.xml中可以通过#{}获取参数

         2.2.1parameterType控制参数类型2.2.2#{}获取参数内容

              2.2.2.1使用索引,从0开始#{0}表示第一个参数

              2.2.2.2也可以使用#{param1}第一个参数

              2.2.2.3如果只有一个参数(基本数据类型或String),mybatis对#{}里面内容没有要求只要写内容即可

             .2.2.2.4如果参数是对象#{属性名}

              2.2.2.5如果参数是map写成#{key}

<selectid="selById"resultType="com.bjsxt.pojo.People"parameterType="int">
            select*frompeoplewhereid=#{0}
</select>

3.#{}和${}的区别

(面试题)

         3.1#{}获取参数的内容支持索引获取,param1获取指定位置参数,并且SQL使用?占位符

         3.2${}字符串拼接不使用?,默认找${内容}内容的get/set方法,如果写数字,就是一个数字

4.如果在xml文件中出现“<”,“>”,双引号等特殊字符时可以使用XML文件转义标签(XML自身的)

           4.1<![CDATA[内容]]>

5.mybatis中实现mysql分页写法

           5.1?不允许在关键字前后进行数学运算,需要在代码中计算完成后传递到mapper.xml中

           5.2在java代码中计算

Map<String, Object> map = new HashMap<String, Object>();
		map.put("pageStart", pageSize*(pageNumber-1));//计算好了再传
		map.put("pageSize", pageSize);
	    pi.setList(session.selectList("a.b.selPage",map));

5.3在mapper.xml中代码

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

四.typeAliases别名

1.系统内置别名:把类型全小写

2.给某个类起别名   

       2.1alias=”自定义”

<typeAliases>
      <typeAliastype="com.bjsxt.pojo.People"alias="peo"/>
 </typeAliases>

2.2mapper.xml中peo引用People类

<selectid="page"resultType="peo" parameterType="map">
      select*frompeoplelimit#{pageStart},#{pageSize}
</select>

3.直接给某个包下所有类起别名,别名为类名,不区分大小写

      3.1mybatis.xml中配置

<typeAliases>
      <packagename="com.bjsxt.pojo"/>
</typeAliases>

 

    3.2mapper.xml中通过类名引用

<selectid="page"resultType="People"parameterType="map">
        select*frompeoplelimit#{pageStart},#{pageSize}
</select>

五.MyBatis实现新增

1.概念复习

                1.1功能:从应用程序角度出发,软件具有哪些功能.

                1.2业务:完成功能时的逻辑.对应Service中一个方法

                1.3事务:从数据库角度出发,完成业务时需要执行的SQL集合,统称一个事务.

                        1.3.1事务回滚.如果在一个事务中某个SQL执行事务,希望回归到事务的原点,保证数据库数据的完整性.

2.在mybatis中默认是关闭了JDBC的自动提交功能

                2.1每一个SqlSession默认都是不自动提交事务.

                2.2session.commit()提交事务.2.3openSession(true);自动提交.setAutoCommit(true);

3.mybatis底层是对JDBC的封装.

                3.1JDBC中executeUpdate()执行新增,删除,修改的SQL.返回值int,表示受影响的行数.

                3.2mybatis中<insert><delete><update>标签没有resultType属性,认为返回值都是int

4.在openSession()时Mybatis会创建SqlSession时同时创建一个Transaction(事务对象),同时autoCommit都为false

                4.1如果出现异常,应该session.rollback()回滚事务.

5.实现新增的步骤

                5.1在mapper.xml中提供<insert>标签,标签没有返回值类型

<insertid="ins"parameterType="People">
       insert into people values(default,#{name},#{age})
</insert>

 

5.2通过session.insert()调用新增方法

intindex1=session.insert("a.b.ins",p);
      if(index1>0){
              System.out.println("成功");
     }else
     {
             System.out.println("失败");
     }

六.MyBatis实现修改

   1.在mapper.xml中提供<update>标签

<updateid="upd"parameterType="People">
         update people setname=#{name} where id=#{id}
</update>

七.MyBatis实现修改

1.在mapper.xml中提供<delete>标签

<deleteid="del"parameterType="int">
       delete  from people where id=#{0}
</delete>