学习来源:黑马程序员
先总结一下遇到的问题
问题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);*/ } }