使用Mybatis思路,首先用mybaits.xml配置环境,然后创建一个dao下的接口后,思路是用mybatis提供的配置解决连接数据库,查询,封装domain中的对象。所以,配置映射路径,然后在对应的文件夹下,写IUserDao.xml(接口对应的配置文件),namspace对应全类名,内部标签对应方法。而后,就算完成了环境的配置。
前提:导入依赖 与 Log4j.properties文件
这一段放在properties标签中,
以下是log4j.properties文件内的内容
### 设置###
log4j.rootLogger = debug,stdout,D,E
### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
### 输出DEBUG 级别以上的日志到=E://logs/error.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = E://logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
### 输出ERROR 级别以上的日志到=E://logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =E://logs/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
接下来进入主题
- 配置主配置其中POOLED暂时不理解
- 完成接口创建
3.插入一段遗忘的知识:关于建表:关于 插入日期字段:如果,日期没有家引号,那么会导致插入的时间失败。
3.由于没用实现接口类,所以需要在配置中加入映射路径:注意:包名与包名之间是/而不是.连接。
注意:要在Resouces中创建与之对应的路径,唯一区别是一个是xml一个是接口类。
4.在对应的路径下,填写配置完成通过配置实现dao层接口类。
注意:sql语句后加不加;不一定,就我的经验,加与不加都一样,但是有些人加了会报错。
注意:namspace必须是接口的全类名,id是方法名,resultType是查询结果封装类的包装类
5.至此,环境搭建完成,测试结果:
1.读取配置文件,此处有两个方法读取配置文件,第一种是采用
InputStream in = Resources.getResourceAsStream("mybatisConfig.xml");
第二种是采用
InputStream in = MybatisTest.class.getClassLoader().getResourceAsStream("mybatisConfig.xml");
区别在于,Resources中其实就是封装了第二种方式,其实就是多了一层封装
2.创建一个可以生产可以利用配置文件连接数据库,进行查询的对象的工厂。
SqlSessionFactoryBuilder builder =new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(in);
3.从工厂中获取session对象
SqlSession session = factory.openSession();
4.利用session对象获取接口类的经过代理类加强过后的对象Mapper:
IUserDao dao = session.getMapper(IUserDao.class);
5.执行mapper方法:
List<User> all = dao.findAll();
for (User user : all) {
System.out.println(user);
}
如果遗漏这一步,就会出现控制台没用输出的情况
6.释放资源:
in.close();
session.close();
总览
后续补充更新