一.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的第一行中控制输出级别
5.log4j输出目的地
5.1在一行控制输出目的地
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
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>