0. 原代码预览
简单实现在数据库中插入数据
public void testInsert() throws IOException { //获取核心配置文件的输入流 InputStream is = Resources.getResourceAsStream("mybatis-config.xml"); //获取SqlSessionFactoryBuilder对象 SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder(); //获取SqlSessionFactory对象 SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is); //获取sql的回话对象sqlSession,是Mybatis提供的操作数据库的对象 SqlSession sqlSession = sqlSessionFactory.openSession(); //获取UserMapper的代理实现类对象 UserMapper mapper = sqlSession.getMapper(UserMapper.class); //调用mapper接口中的方法,实现添加用户信息的功能 int result = mapper.insertUser(); System.out.println("结果:"+result); //提交事务 sqlSession.commit(); //关闭sqlSession对象 sqlSession.close(); }
- SqlSession:代表Java程序和数据库之间的会话。(HttpSession是Java程序和浏览器之间的会话)
- SqlSessionFactory:是“生产”SqlSession的“工厂”。
1. 简化代码
根据两个一致性,可以将获取UserMapper的代理实现类对象
和调用mapper接口中的方法
两部分代码写为:
//例如我的代码: int result = sqlSession.insert("com.atguigu.mybatis.insertUser");//参数是:全类名+方法名。也就是映射文件中sql的id位置
2. 自动提交sql事务
每次都需要手动提交SQL事务sqlSession.commit()
。可以在获取sql的回话对象sqlSession
的代码:sqlSessionFactory.openSession()
加一个参数:
SqlSession sqlSession = sqlSessionFactory.openSession(true);
3. 加入log4j日志功能
-
在pom.xml中加入依赖
<!-- log4j日志 --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.12</version> </dependency>
-
加入log4j的配置文件
log4j的配置文件名必须为log4j.xml,存放的位置是src/main/resources目录下
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"> <param name="Encoding" value="UTF-8" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m (%F:%L) /n" /> </layout> </appender> <logger name="java.sql"> <level value="debug" /> </logger> <logger name="org.apache.ibatis"> <level value="info" /> </logger> <root> <level value="debug" /> <appender-ref ref="STDOUT" /> </root> </log4j:configuration>
重新运行代码,查看日志功能: