zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    flock对文件锁定读写操作的问题 简单
    hdu 2899 Strange Fuction(二分)
    hdu 2199 Can you solve this equation? (二分)
    poj 3080 Blue Jeans (KMP)
    poj 2823 Sliding Window (单调队列)
    poj 2001 Shortest Prefixes (trie)
    poj 2503 Babelfish (trie)
    poj 1936 All in All
    hdu 3507 Print Article (DP, Monotone Queue)
    fzu 1894 志愿者选拔 (单调队列)
  • 原文地址:https://www.cnblogs.com/Damon-Luo/p/5665325.html
Copyright © 2011-2022 走看看