数据库建表
create table student( id number, name varchar2(20), gender varchar2(8), birthday date);
新建一个项目,创建好相应的package及class
package com.briup.bean; import java.util.Date; public class Student { private int id; private String name; private String gender ; private Date birthday; get/set }
项目中引入mybatis的核心包(必选)以及可选的依赖包
mybatis中的配置文件和映射文件分别引入到项目中(默认的dtd文件中没有设置<!DOCTYPE>可以从官方文档复制)
src下面的mybatis-config.xml:<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="oracle.jdbc.driver.OracleDriver"/> <property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"/> <property name="username" value="jack"/> <property name="password" value="jack"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/briup/mappers/studentMapper.xml"/> </mappers> </configuration>
com.briup.mappers包下面的StudentMapper.xml:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- com.briup.mappers.StudentMapper是我们定义接口的全限定名字 这样就可以使用接口调用映射的SQL语句了 注意这个名字一般【可以】和对应的包名字一样的--> <mapper namespace="com.briup.mappers.StudentMapper"> <insert id="saveStudent" parameterType="com.briup.bean.Student"> insert into student(id,name,gender,birthday) values (#{id},#{name},#{gender},#{birthday}) </insert> <select id="findAll" resultType="com.briup.bean.Student"> select * from student </select> </mapper>
配置log4j.properties文件中的日志输出:
位置src下面
内容:log4j.rootLogger=DEBUG, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d [%-5p] %c - %m%n #show sql log4j.logger.java.sql.ResultSet=INFO log4j.logger.org.apache=INFO log4j.logger.java.sql.Connection=DEBUG log4j.logger.java.sql.Statement=DEBUG log4j.logger.java.sql.PreparedStatement=DEBUG
com.briup.mappers包下面新建一个接口StudentMapper.java,用来对应xml文件中的sql语句,从而之前方便我们调用
package com.briup.mappers; import java.util.List; import com.briup.bean.Student; //创建映射器Mapper接口StudentMapper //方法名和StudentMapper.xml中定义的SQL映射定义名相同 //这个其实就是我们之前的dao层接口 public interface StudentMapper { public int saveStudent(Student s)throws Exception; public List<Student> findAll() throws Exception; }
创建一个测试类StudentMapperTest.java
package test; import java.io.InputStream; import java.util.Date; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.Test; import com.briup.mappers.StudentMapper; import com.briup.pojo.Student; public class StudentMapperTest { @Test public void testCreateStudent(){ try { InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml"); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession sqlSession = sqlSessionFactory.openSession(); StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class); Student s = new Student(1, "zhangsan", "F", new Date()); studentMapper.saveStudent(s); sqlSession.commit(); } catch (Exception e) { e.printStackTrace(); } } }
运行成功后会在控制台中看到log4j日志输出的信息其中还包括事务成功提交的信息
```