方式二:使用class文件绑定注册
注意点:
接口和他的mapper文件都需要在Mybatis核心配置文件中注册
接口和他的mapper文件配置文件必须再同一包下!
方式三:使用扫描包注册
注意点:
接口和他的Mapper配置文件必须同名!
接口和他的mapper文件配置文件必须再同一包下!
4-6生命周期和作用域
不同作用域和生命周期类别是至关重要的,因为错误的使用会导致非常严重的并发问题。
SqlSessionFactoryBuilder
-
一旦创建了 SqlSessionFactory,就不再需要它了。
-
局部变量
SqlSessionFactory
-
SqlSessionFactory 一旦被创建就应该在应用的运行期间一直存在,没有任何理由丢弃它或重新创建另一个实例。
-
SqlSessionFactory 的最佳作用域是应用作用域。
-
最简单的就是使用单例模式或者静态单例模式
SqlSession(相当于从连接池中获取一个连接)
-
连接到连接池的请求!
-
关闭
-
SqlSession 的实例不是线程安全的,因此是不能被共享的,它的最佳的作用域是请求或方法作用域
-
用完之后需要赶紧关闭,
一个SQLSession 可以多次使用它的getMapper方法,获取多个mapper接口实例
打个比方:
-
SqlSessionFactoryBuilder 是造车公司
-
造了100台车,然后买给租车公司(SQLSessionFactory),然后倒闭
-
SQLSession 用户 租车,使用车
-
mapper 用户的使用,用户租到车之后可以开去这,开去那,任凭使用
-
用户(SQLSession) 执行完想做的事之后,必须归还“汽车” 给租车公司(SQLSessionFactory)
这里面的每一个mapper 就代表一个具体的业务。
数据库中的字段和JavaBean不一致的情况
public class User {
private int id;
private String name;
private String password;
select id,name,pwd from users
解决办法
起别名
select id,name,pwd as password from users
2、ResultMap 结果集映射
resultMap 元素是 MyBatis 中最重要最强大的元素。
ResultMap 的设计思想是,对简单的语句做到零配置,对于复杂一点的语句,只需要描述语句之间的关系就行了。
MyBatis 会在幕后自动创建一个 ResultMap,再根据属性名来映射列到 JavaBean 的属性上。
6-1.日志工厂
如果一个数据库操作出现了异常,我们需要排错。日志就是最好的助手!
曾经:debug sout
现在:日志工厂
-
SLF4J
-
LOG4J 【掌握】
-
LOG4J2
-
JDK_LOGGING
-
COMMONS_LOGGING
-
STDOUT_LOGGING
-
NO_LOGGING
6-2.LOG4J
什么是LOG4J
-
Log4j是Apache的一个开源项目
-
通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件
-
我们可以控制每一条日志的输出格式;
-
通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。
-
通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。
1.先导入LOG4J的依赖
log4j
log4j
1.2.17
2.编写log4j.properties文件
配置根
log4j.rootLogger = debug,console ,fileAppender,dailyRollingFile,ROLLING_FILE,MAIL,DATABASE
设置输出sql的级别,其中logger后面的内容全部为jar包中所包含的包名
log4j.logger.org.apache=debug
log4j.logger.java.sql.Connection=debug
log4j.logger.java.sql.Statement=debug
log4j.logger.java.sql.PreparedStatement=debug
log4j.logger.java.sql.ResultSet=debug
配置输出到控制台
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.Target = System.out
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern = %d{ABSOLUTE} %5p %c{1}:%L - %m%n
配置输出到文件
log4j.appender.fileAppender = org.apache.log4j.FileAppender
log4j.appender.fileAppender.File = logs/log.log
log4j.appe