mybatis 简单项目步骤

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
原文地址:https://www.cnblogs.com/Damon-Luo/p/5665325.html