mybatis.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="project" /> <property name="password" value="1234" /> </dataSource> </environment> </environments> <mappers> <mapper resource="com/oracle/mapper/StudentMapper.xml" /> </mappers> </configuration>
获取数据源
public class MyBatisSqlSession { // 获取数据源 private static String resource = "mybatis.xml"; private static InputStream inputStream = null; private static SqlSessionFactory sqlSessionFactory = null; static { try { inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } public static SqlSession getSession() { return sqlSessionFactory.openSession(); } }
mapper.xml
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- namespace配置的是dao接口--> <mapper namespace="com.oracle.dao.IStudentMapperDao"> <!--#{}固定写法,中间的值是属性值 id 属性值就是接口里面的方法名--> <insert id="saveStudent" parameterType="com.oracle.pojo.Student"> <!-- keycolum表的字段,keyproperty属性 order=before在insert语句执行之前执行--> <selectKey keyColumn="id" keyProperty="id" resultType="java.lang.Long" order="BEFORE"> select student_seq.nextval as id from dual </selectKey> insert into student (id, name, address, gender,age) values ( #{id}, #{name}, #{address}, #{gender},#{age}) </insert> <select id="getStudentById" parameterType="java.lang.Long" resultType="java.util.HashMap"> select * from student where id=#{id} </select> <resultMap type="com.oracle.pojo.Student" id="studentResultMap"> <id column="id" property="id" javaType="long" jdbcType="BIGINT" /> <result column="name" property="name" javaType="string" jdbcType="VARCHAR"/> <result column="address" property="address" javaType="string" jdbcType="VARCHAR"/> <result column="gender" property="gender" javaType="string" jdbcType="VARCHAR"/> <result column="age" property="age" javaType="int" jdbcType="INTEGER"/> </resultMap> <select id="getStudent" parameterType="java.lang.Long" resultMap="studentResultMap"> select * from student where id=#{id} </select> <select id="getStudentByParam22222" parameterType="java.util.HashMap" resultMap="studentResultMap"> select * from student where id=#{id} and address=#{address} </select> <sql id="studentsql"> id,name ,address,gender,age </sql> <sql id="wheresql"> address=#{address} </sql> <select id="getStudentByParam" parameterType="java.lang.String" resultType="java.util.HashMap"> select <include refid="studentsql"></include> from student where <include refid="wheresql"></include> </select> <delete id="deleteStudent" parameterType="long"> delete from student where id=#{id} </delete> <update id="updateStudent" parameterType="java.util.HashMap" > update student set address=#{address} where id=#{id} </update> <select id="selectByCondition" parameterType="com.oracle.pojo.Student" resultType="com.oracle.pojo.Student" > select id,name,address,gender,age from student where 1=1 <if test="id != null"> and id = #{id} </if> <if test="name != null"> and name = #{name} </if> <if test="address != null"> and address like #{address} </if> <if test="gender != null"> and gender = #{gender} </if> <if test="age != 0"> and age = #{age} </if> </select> <sql id="key"> <trim suffixOverrides=","> id, <if test="name !=null"> name, </if> <if test="address !=null"> address, </if> <if test="gender != null"> gender, </if> <if test="age != 0"> age, </if> </trim> </sql> <sql id="values"> <trim suffixOverrides=","> #{id}, <if test="name !=null"> #{name}, </if> <if test="address !=null"> #{address}, </if> <if test="gender != null"> #{gender}, </if> <if test="age != 0"> #{age}, </if> </trim> </sql> <insert id="dynainsert" parameterType="com.oracle.pojo.Student" > <selectKey keyColumn="id" keyProperty="id" resultType="java.lang.Long" order="BEFORE"> select student_seq.nextval as id from dual </selectKey> insert into student(<include refid="key"></include>) values (<include refid="values"></include>) </insert> <delete id="dynaDeleteArray" > delete student where id in <foreach collection="array" open="(" close=")" separator="," item="ids"> #{ids} </foreach> </delete> <delete id="dynaDeleteList"> delete from students where students_id in <foreach collection="list" open="(" close=")" separator="," item="ids"> #{ids} </foreach> </delete> <update id="dynaUpdate" parameterType="com.oracle.pojo.Student"> update student <set> <if test="address !=null"> address = #{address}, </if> <if test="age!=0"> age = #{age}, </if> </set> where id=#{id} </update> </mapper>
dao
public interface StudentDao { public int save(Student stu); public List query(); }
test
public class Student_Test { public static void main(String[] args) { SqlSession session = MyBatisSqlSession.getSession(); StudentDao mapper = session.getMapper(StudentDao.class); // List list = mapper.query(); // System.out.println(list.size()); Student stu=new Student(); stu.setName("qqqqqqq"); stu.setAge(100); int save = mapper.save(stu); session.commit(); } }
实体类忽略,
必须的jar包,mabatis.jar,ojdbc.jar,和一个log4j用来输出日志
log4j配置文件名:/MyWeb7.12/src/log4j.properties
log4j.rootLogger = debug , stdout 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 = %d %p [%c] - %m%n log4j.logger.com.ibatis=debug log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug log4j.logger.java.sql.Connection=debug log4j.logger.java.sql.Statement=debug log4j.logger.java.sql.PreparedStatement=debug,stdout