ibatis:ibatis小结来源: 发布时间:星期三, 2008年9月10日 浏览:342次 评论:0
sqlMap配置文件
<?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> <!-- settings元素指定全局配置选项 --> <!-- useStatementNamespaces属性指定是否开启命名空间,默认值为false(关闭) --> <!-- cacheModelsEnabled属性指定是否开启数据高速缓存,默认值为true(开启) --> <!-- enhancementEnabled属性指定是否开启cglib中已优化的类来提高延迟加载的性能,默认值为true(开启) --> <!-- lazyLoadingEnabled属性指定是否开启延迟加载,默认值为true(开启) --> <settings useStatementNamespaces="true" cacheModelsEnabled="true" enhancementEnabled="true" lazyLoadingEnabled="true" /> <!-- 由transactionManager元素的type属性值指定使用哪个事务管理器. --> <transactionManager type="JDBC" commitRequired="false"> <!-- dataSource元素定义DataSourceFactory的实现类,用这个实现类来创建实际的DataSourse. --> <dataSource type="SIMPLE"> <!-- 指定数据源的各种属性值 --> <property name="JDBC.Driver" value="oracle.jdbc.driver.OracleDriver" /> <property name="JDBC.ConnectionURL" value="jdbc:oracle:thin:@127.0.0.1:1521:TEST" /> <property name="JDBC.Username" value="me" /> <property name="JDBC.Password" value="123" /> </dataSource> </transactionManager> <sqlMap resource="com/lovo/ibatis/student.xml" /> </sqlMapConfig> —————————————————————————————————————————————————————— <!-- ibatis映射文件 --> <?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 namespace="Person"> <!-- 给经常使用到的类取一个别名 --> <typeAlias alias="person" type="com.po.Person"/> <!-- 查询全部数据 --> <select id="getAllPerson" resultClass="person"> <![CDATA[ select * from person ]]> </select> <!-- 查询单条数据 --> <select id="getOnePerson" resultClass="person" parameterClass="int"> <![CDATA[ select * from person where id=#id# ]]> </select> <!-- 插入1条数据 --> <insert id="insertUser" parameterClass="person"> <![CDATA[ INSERT INTO person(name,pwd) VALUES (#name#,#pwd#) ]]> </insert> <!-- 删除全部数据 --> <delete id="deleteAllPerson"> <![CDATA[ delete from person ]]> </delete> <!-- 删除1条数据 --> <delete id="deleteOnePerson" parameterClass="person"> <![CDATA[ delete from person where id=#id# ]]> </delete> <!-- 更新1条数据 --> <update id="updatePerson" parameterClass="person"> <![CDATA[ UPDATE person SET name=#name#,pwd=#pwd# WHERE id = #id# ]]> </update> </sqlMap> —————————————————————————————————————————————————————— 可以将一条sql语句进行分解,如: <sql id="select-all"> <![CDATA[ select * from t_stu ]]> </sql> <sql id="where-name"> <![CDATA[ where s_name = #name# ]]> </sql> <!-- 查询一个学生 --> <select id="showOneStudent" parameterClass="String" resultClass="student"> <include refid="select-all"/> <include refid="where-name"/> </select> 这样在其他sql语句中也可以引用<sql>标签中定义的语句,只要传入的参数正确即可,提高了复用率 (注意:<include>标签组合sql语句的顺序) —————————————————————————————————————————————————————— ibatis中like关键字的用法 <select id="showOneStudentByName" parameterClass="String" resultMap="studentORM"> <![CDATA[ select * from t_stu where s_name like '%'||#name#||'%' ]]> </select> —————————————————————————————————————————————————————— 读取配置文件 Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml"); SqlMapClient sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader); reader.close(); 查询单条记录 Person p = (Person)sqlMapper.queryForObject("getOnePerson", 55); System.out.println("名字:" + p.getName() + " 密码:" + p.getPwd()); 查询全部记录(返回1个List) List personList = sqlMapper.queryForList("getAllPerson"); for(int i=0; i<personList.size(); i++){ Person p = (Person)personList.get(i); String name = p.getName(); String pwd = p.getPwd(); System.out.println("名字:" + name + " 密码:" + pwd); } 查询全部记录(返回1个Map),其中id和name都是Person类的属性, 得到的Map是以id属性的值作为键,name属性的值作为值 Map map = sqlMapper.queryForMap("getAllPerson", null, "id","name"); Set keySet = map.keySet(); Iterator it = keySet.iterator(); while(it.hasNext()){ int id = (Integer) it.next(); String name = (String) map.get(id); System.out.println(id + " " +name); } 分页支持 arg0表示映射文件中要执行的sql语句,arg1表示从第多少行记录开始(包含这一行记录) arg2表示要取多少行记录。 例如:List personList = sqlMapper.queryForList("getAllPerson",8,5); 表示执行"getAllPerson"匹配的sql语句,从第8行记录开始,取5条记录。 更改数据 Person p = new Person(); p.setId(55); p.setName("张三"); p.setPwd("321"); sqlMapper.update("updatePerson",p); 删除全部数据 sqlMapper.delete("deleteAllPerson"); 删除单条数据 for(int i=0; i<10; i++){ Person p = new Person(); p.setId(i); sqlMapper.delete("deleteOnePerson",p); } 插入单条数据 for(int i=0; i<10; i++){ Person p = new Person(); p.setName("名字" + i); p.setPwd("密码" + i); sqlMapper.insert("insertUser",p); } ____________________________________________ 事务处理 sqlMapper.startTransaction(); try{ for(int i=1; i<11; i++){ Person p = new Person(); p.setId(i); p.setName("名字" + i); p.setPwd("密码" + i); sqlMapper.insert("insertUser",p); } Person p = new Person(); p.setId(1); sqlMapper.insert("insertUser", p); sqlMapper.commitTransaction(); } catch (Exception e) { sqlMapper.endTransaction(); e.printStackTrace(); } SqlMapClient类中有以下方法控制事务 startTransaction()方法开始一个事务 commitTransaction()方法提交事务 endTransaction()方法回滚事务 3
相关文章
读者评论
发表评论 |