zoukankan      html  css  js  c++  java
  • ibatsi学习总结

    学习来源:黑马程序员

    先总结一下遇到的问题

    问题1:
    1,resultMap 可以不写,比如配置1 配置1: <typeAlias alias="puser" type="com.loong.config.PUser"/> <select id="selectAllPUser" resultClass="puser"></select> select * from p_user </select> 2resultMap 写的情况下,select语句可以有两种 比如--1,--2,检索时,结果一样 <typeAlias alias="puser" type="com.loong.config.PUser"/> <resultMap class="puser" id="puserResult"> <result property="id" column="ID"/> <result property="name" column="NAME"/> <result property="password" column="PASSWORD"/> <result property="age" column="AGE"/> </resultMap> <!-- 1. 也可以实现--> <!-- <select id="selectAllPUser" resultClass="puser"></select> --> <!-- 2. --> <select id="selectAllPUser" resultMap="puserResult" > select * from p_user </select>
    问题2:
    模糊查询有两种方法
    方法1:
    java:dao.selectPUserByName("test")
    <select id="selectPUserByName" resultClass="puser" parameterClass="String">
            select id,name,password,age 
            from p_user
            where name like '%$name$%'
        </select>
    
    方式2
    java:dao.selectPUserByName("%test%")
    <select id="selectPUserByName" resultClass="puser" parameterClass="String">
            select id,name,password,age 
            from p_user
            where name like '$name$' 
        </select>
    问题3:
    如果是普通方式创建自动ID的话,通过selectKey的方式,添加ID
    比如:
    创建自增长语句:create sequence p_user_Sequence start with 1 increment by 1;
    <insert id="insertPUserBySequence" parameterClass="PUser">
        <selectKey resultClass="java.lang.String" keyProperty="id">
            select p_user_Sequence.nextVal as id
            from dual
        </selectKey> -->            
        insert into p_user(id, name,  password,  age)
                values(#id#,#name#,#password#,#age#)        
    </insert>
    
    如果是特殊自增ID的话,比如
    create sequence p_user_Sequence
    increment by 1
        start with 1
        nomaxvalue
        nocycle
        cache 10;
    create or replace trigger p_user before
    insert on p_user for each row
    begin 
      select p_user_Sequence.nextval into:New.id from dual;
    end;
    就不必在添加selectKey,会自动实现。
    <insert id="insertPUserBySequence" parameterClass="PUser">    
        insert into p_user(id, name,  password,  age)
                values(#id#,#name#,#password#,#age#)        
    </insert>
    需要三个配置文件:
    1.SqlMapConfig.xml 总配置文件
    2.PUser.xml 表映射文件
    3.jdbc.properties 数据库配置文件
    1. SqlMapConfig.xml 
    <?xml version="1.0" encoding="UTF-8"?>
    
    <!DOCTYPE sqlMapConfig 
        PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
        "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
    
    <sqlMapConfig>
    
        <properties resource="com/loong/config/jdbc.properties"/>
        
        <transactionManager type="JDBC">
            <dataSource type="SIMPLE">
                <property value="${driver}" name="JDBC.Driver"/>
                <property value="${url}" name="JDBC.ConnectionURL"/>
                <property value="${username}" name="JDBC.Username"/>
                <property value="${password}" name="JDBC.Password"/>
            </dataSource>
        </transactionManager>
        
        <sqlMap resource="com/loong/config/PUser.xml"/>
    
    </sqlMapConfig>
    2. PUser.xml 
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE sqlMap
        PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
        "http://ibatis.apache.org/dtd/sql-map-2.dtd">
        
    <sqlMap>
        <typeAlias alias="puser" type="com.loong.config.PUser"/>
        
        <resultMap class="puser" id="puserResult">
            <result property="id" column="ID"/>
            <result property="name" column="NAME"/>
            <result property="password" column="PASSWORD"/>
            <result property="age" column="AGE"/>
        </resultMap>
        
        <!-- 1. 也可以实现-->
        <!-- <select id="selectAllPUser" resultClass="puser"></select> -->
        <!-- 2. -->
        <select id="selectAllPUser" resultMap="puserResult"  >
            select * 
            from p_user
        </select>
        
        <select id="selectPUserByName" resultClass="puser" parameterClass="String">
            select id,name,password,age 
            from p_user
            <!--方式1 where name like '$name$'  java dao.selectPUserByName("%test%") -->
            where name like '%$name$%'
        </select>
    
        <insert id="insertPUserBySequence" parameterClass="PUser">
        
    <!--         3.如果是下面的创建sql语句,不用加selectKey,会自动创建ID
    create sequence p_user_Sequence
    increment by 1
        start with 1
        nomaxvalue
        nocycle
        cache 10;
    create or replace trigger p_user before
    insert on p_user for each row
    begin 
      select p_user_Sequence.nextval into:New.id from dual;
    end; -->
            <!-- <selectKey resultClass="java.lang.String" keyProperty="id">
                select p_user_Sequence.nextVal as id
                from dual
                还有一种简单创建自增长语句:create sequence p_user_Sequence start with 1 increment by 1;
            </selectKey> -->            
            insert into p_user(id, name,  password,  age)
                        values(#id#,#name#,#password#,#age#)        
        </insert>
        
        <update id="updatePUserById" parameterClass="puser">
            update p_user
            set        
                    name=#name#,
                    password=#password#,
                    age=#age#
            where   id=#id#
        </update>
        
        <delete id="deletePUserById" parameterClass="int">
            delete from p_user
            where id=#id#
        </delete>
    </sqlMap>
    3. jdbc.properties 
    driver=oracle.jdbc.driver.OracleDriver
    url=jdbc:oracle:thin:@127.0.0.1:1521:orcl
    username=scott
    password=tiger
    1.对象文件PUser.java
    package com.loong.config;
    
    public class PUser {
        
        public int id;
        public String name;
        public String password;
        public int age;
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
    
        @Override
        public String toString() {
            String content = "ID = " + id + " name= " + name + " password= " + password + " age= "+ age;
            return content;
        }
        
        
    
    }
    
    2.接口文件IPUserDao.java
    package com.loong.config;
    
    import java.util.List;
    
    public interface IPUserDao {
        
        public List<PUser> selectAllPUser();
        
        public List<PUser> selectPUserByName(String name);
        
        public void InsertPUserbySequence(PUser puser);
        
        public void deletePUserById( int id);
        
        public void updatePUserById(PUser puser);
    
    }
    3. 实现类文件IPuserDaoImpl.java
    package com.loong.config;
    
    import java.io.IOException;
    import java.io.Reader;
    import java.sql.SQLException;
    import java.util.List;
    
    import com.ibatis.sqlmap.client.SqlMapClient;
    
    public class IPuserDaoImpl implements IPUserDao {
        
        private static SqlMapClient sqlMapClient= null;
        
        static {
            try {
                Reader reader = com.ibatis.common.resources.Resources.
                        getResourceAsReader("com/loong/config/SqlMapConfig.xml");
                
                sqlMapClient = com.ibatis.sqlmap.client.SqlMapClientBuilder.buildSqlMapClient(reader);
                
                reader.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
        }
        
        
    
        //1.
        @Override
        public List<PUser> selectAllPUser() {
            
            List<PUser> puserList = null;
            try {
                puserList = sqlMapClient.queryForList("selectAllPUser");
                System.out.println("ddd");
            } catch (SQLException e) {
                e.printStackTrace();
            }
            
            return puserList;
        }
    
        @Override
        public List<PUser> selectPUserByName(String name) {
            List<PUser> puserList = null;
            
            try {
                puserList = sqlMapClient.queryForList("selectPUserByName", name);
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return puserList;
        }
    
        @Override
        public void InsertPUserbySequence(PUser puser) {
            try {
                sqlMapClient.insert("insertPUserBySequence", puser);
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
        }
    
        @Override
        public void deletePUserById(int id) {
            try {
                sqlMapClient.delete("deletePUserById",id);
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
        }
    
        @Override
        public void updatePUserById(PUser puser) {
    
            try {
                sqlMapClient.update("updatePUserById",puser);
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
        }
    
        public static void main(String[] args) {
            IPUserDao dao = new IPuserDaoImpl();
            //1.
            /*for(PUser puser : dao.selectAllPUser()){
                System.out.println(puser.toString());
            }*/
            
            
            //2.
            
    /*        for(PUser puser : dao.selectPUserByName("%test%")){ // 对应xml-->where name like '$name$'
    */        /*for(PUser puser : dao.selectPUserByName("test")){   // 对应xml-->where name like '%$name$%'
                System.out.println(puser.toString());
            }*/
            
            //2.
            PUser puser = new PUser();
            puser.setName("intage");
            puser.setPassword("123");
            puser.setAge(1);
            
            dao.InsertPUserbySequence(puser);
    
            
            // 3.
            /*PUser puser = new PUser();
            puser.setId("16");
            puser.setName("ageibatis");
            puser.setPassword("123");
            puser.setAge("1");
            
            dao.updatePUserById(puser);*/
            
            //4.
            /*dao.deletePUserById(12);*/
            
        
        }
    
    }
  • 相关阅读:
    Object: Date对象——时间的设置和返回
    CSS基础知识-常用属性(updating)
    图像
    一些基础名词及含义(更新中)
    HTML常用元素合集(更新中)
    HTML小贴士-tips1
    HTML&CSS基础(一):基本格式(更新中)
    vue 轮播图显示三张图片,图片居中显示
    移动端 rem自适应布局 (750的设计稿)
    vue axios 在ios 中不执行回调(vconsole中status为0)
  • 原文地址:https://www.cnblogs.com/ysloong/p/6394114.html
Copyright © 2011-2022 走看看