一MyBatis的介绍
MyBatis 是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。
MyBatis 消除了几乎所有的JDBC代码和手工设置参数以及结果集的检索。
MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
MyBatis不能自动创建表,如果能够自动建表,必须自己先准备好建表的sql语句。。
MyBatis与Hibernate、JDBC的区别
1 MyBatis与Hibernate的区别:MyBatis自己写sql语句,性能更好控制,Hibernate不用自己写sql语句,开发速度更快
2 MyBatis与JDBC的区别:MyBatis只需要关注SQL,其它完成了封装,这样开发速度更快
Mybatis的基本配置
导包(核心,依赖包,数据库驱动包)
注:驱动包就是各大数据库厂商根据JDBC规范实现的jar包
有表,有domain
数据库中准备好一个表 然后在domain中字段一一对应
核心配置文件 mybatis-config.xml
这个配置文件可以去官方文档去找,注意引入连接池的配置文件
创建映射文件 XxxMapper.xml
MyBatisCRUD
MyBatisUtil工具类
CRUD的关键代码
我这里加了别名 所以返回类型为类名product
别名
注意顺序
注意点与细节
添加时需要id
MyBatis添加时与JDBC一样,不会回填id,Hibernate自带回填,所以性能回差点,有时候我们需要这个id,那么可以添加这几句代码,很方便
useGeneratedKeys:是否要返回id
keyColumn:数据库中的主键对应的列
keyProperty:domain中对应的主键属性
id返回到传过来的对象中
日志管理
Log4j简介
Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局)。
可简单理解为日志类别,日志要输出的地方和日志以何种形式输出。综合使用这三个组件可以轻松地记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置。
日志等级
等级从低到高
TRACE:详细
Debug:调试,类似于System.out.print
Info:信息,类似于JPA打印sql等级
Warn:警告,程序可以正常运行,出现提示
Error:错误,出现异常
log4j.properties
要在项目中打开日志,大家在资源文件根目录下创建一个log4j.properties的文件,并把下面的代码写入到里面。
log4j.rootLogger=ERROR, stdout
#log4j.rootLogger=NONE
# trace<debug<info<warn<error
# ERROR:错误级别 WARN:警告级别 info:信息级别 debug:调试级别 trace:打印级别
log4j.logger.cn.itsource=TRACE 把左边包名改成你自己的包名
# 输出到控制台
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
# 输入的数据布局(格式)
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# %d:时间 %p:信息级别 %c:对应的类 %m:信息 %n:换行
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
列名与属性名不一致
添加与修改在相应位置修改名称即可
查询需要创建一个resultMap
使用的时候返回结果必需是resultMap
常见问题
1.没有导入数据库的驱动包
2.在XML中很多都是字符串,细心,不要写错
3.在映射文件中全限定类名可能会写错
4.找不到相应的Statement(sql语句)
5.找SQL的Statement写错了
6.在核心XML中没有找相应的映射文件
7.在我们调用Statement(sql语句的时候),经常会忘记传参
8.执行成功后,数据库却没有反映,很有可能是没有提交事务
9.可能我们忘了写执行的代码了
10.错误一定要打印出来(执行的时候没效果,但是又不报错)
11.Mapper中就算一个语句没有使用,它的错也可能会影响到其它正确的语句
12.框架的错往往从后向前找
13.很多同学没有取别名,但是他一直去用
14.Mysql乱码,添加字符编码:useUnicode=true&characterEncoding=UTF-8