zoukankan      html  css  js  c++  java
  • iBatis的CRUD操作详细总结

    昨天晚上看了一下关于iBatis的一个讲解的视频,讲的和我的这个简单的总结差不多....

    思考了一下还是把主要操作都总结一下吧,当然这里也不是全的,知识简单的CRUD。。。

    首先我觉得持久层的操作主要就是这几个:

    public interface IPersonDao {
    	//添加
    	public boolean addPerson(Person person);
    	//更新
    	public boolean updatePerson(Person person);
    	//删除 根据ID删除, 批量删除
    	public boolean deletePersonById(int id);
    	public boolean deleteAll(List<Integer> ids);
    	//查询,根据ID, name模糊查询, 查询所有, 多条件查询,分页查询
    	public Person queryById(int id);
    	public List<Person> queryByName(String name);
    	public List<Person> queryAllPerson();
    	public List<Person> queryPersons(Person person);
    	public List<Person> queryPage(Map<String, Object> info);
    }
    

      

    然后我们就一一实现吧。

    Person类:

    public class Person {
    	private int id;
    	private String name;
    	private int age;
            //省去了getter setter
    }
    

      

    Person.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 namespace="Person">
    <!--  实体类路径和名 这里得到person是大小写不敏感的   -->
    	  <typeAlias alias="person" type="com.gbx.po.Person" />
    
    	 	 
    	 
    	  <!-- SQL语句 -->
    	  
    	  <insert id="addPerson" parameterClass="person" >
    	  <!-- 利用自增字段来填充主键    -->
    	  	<selectKey resultClass="int" keyProperty="id">
    	  		select LAST_INSERT_ID() as id
    	  	</selectKey>
    	  	insert into t_person(id,  name,   age) 
    	  				values(#id#, #name#, #age#)
    	  </insert>
    	  
    	  <update id="updatePerson" parameterClass="person">
    	  	update t_person 
    	  	set 
    	  		id=#id#,
    	  		name=#name#,
    	  		age=#age#
    	  	where 
    	  		id=#id#
    	  </update>
    	  <delete id="deletePerson" parameterClass="int">
    	  	delete from t_person
    	  	where 
    	  		id=#id#
    	  </delete>
    	  
    	  <delete id="deleteAllPerson" parameterClass="List">
    	  	delete from t_person
    	  	where 
    	  		id in 
    	  		(<iterate conjunction=",">
    	  			#[]#
    	  		</iterate>)
    	  </delete> 
    	  
    	  <select id="queryPersonById" parameterClass="int" resultClass="person">
    	  	select id, name, age
    	  	from t_person
    	  	where 
    	  		id=#id#
    	  </select>
    	  
    	  <select id="queryPersonByName" parameterClass="String" resultClass="person">
    	  	select id, name, age
    	  	from t_person
    	  	where
    	  		name like '%$name$%'
    	  </select>
    	  <select id="queryAllPerson" resultClass="person" >
    	  	select id, name, age 
    	  	from t_person
    	  </select>
    	  
    	  <select id="queryPersons" resultClass="person" parameterClass="person" >
    	  	select id, name, age
    	  	from t_person
    	  	<dynamic prepend="where">
    	  		<isNotEqual prepend="and"  property="id" compareValue="0">
    	  			id=#id#
    	  		</isNotEqual>
    	  		<isNotNull prepend="and" property="name">
    	  			name like '%$name$%'
    	  		</isNotNull>
    	  		<isGreaterEqual prepend="and" property="age" compareValue="0">
    	  			age>#age#
    	  		</isGreaterEqual>
    	  	</dynamic>
    	  	
    	  </select>
    	  
    	  <select id="queryPage" parameterClass="java.util.Map" resultClass="person">
    	  	select id, name, age 
    	  	from t_person
    	  	<dynamic prepend="where">
    	  		<isNotEqual prepend="and"  property="id" compareValue="0">
    	  			id=#id#
    	  		</isNotEqual>
    	  		<isNotNull prepend="and"  property="name">
    	  			name like '%$name$%'
    	  		</isNotNull>
    	  		<isNotEqual prepend="and" property="age" compareValue="0">
    	  			age>=#age#
    	  		</isNotEqual>
    	  	</dynamic>
    	  	limit #begin#, #pageSize#
    	  </select>
    	  
    
    </sqlMap>
    

      

    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="SqlMap.properties"/>
    <!-- 配置数据库连接信息 -->
    		<transactionManager type="JDBC">
    			<dataSource type="SIMPLE">
    				<property name="JDBC.Driver" value="${driver}" />
    				<property name="JDBC.ConnectionURL" value="${url}" />
    				<property name="JDBC.Username" value="${username}" />
    				<property name="JDBC.Password" value="${password}" />
    			</dataSource>
    		</transactionManager>
    		
    		<sqlMap resource="com/gbx/po/Person.xml"/>
    		
    </sqlMapConfig> 
    

      

    PersonDaoImp 

    package com.gbx.dao;
    
    import java.io.IOException;
    import java.io.Reader;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import com.gbx.po.Person;
    import com.ibatis.common.resources.Resources;
    import com.ibatis.sqlmap.client.SqlMapClient;
    import com.ibatis.sqlmap.client.SqlMapClientBuilder;
    
    public class PersonDaoImp implements IPersonDao{
    
    
    	private static SqlMapClient client = null;
    	static{
    		try {
    			Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");
    			client = SqlMapClientBuilder.buildSqlMapClient(reader);
    			reader.close();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		
    	}
    	public boolean addPerson(Person person) {
    		System.out.println("添加前 " + person.getId());
    		try {
    			client.insert("addPerson", person);
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		System.out.println("添加后: " + person.getId());
    		return true;
    	}
    
    	public boolean updatePerson(Person person) {
    		try {
    			client.update("updatePerson", person);
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		System.out.println("更新成功....");
    		return true;
    	}
    
    	public boolean deletePersonById(int id) {
    		try {
    			client.delete("deletePerson", id);
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		System.out.println("删除成功....");
    		return true;
    	}
    
    	public boolean deleteAll(List<Integer> ids) {
    		try {
    			client.delete("deleteAllPerson", ids);
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		System.out.println("删除成功....");
    		return true;
    	}
    
    	public Person queryById(int id) {
    		Person p = null;
    		try {
    			p  = (Person) client.queryForObject("queryPersonById", id);
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		return p;
    	}
    
    	@SuppressWarnings("unchecked")
    	public List<Person> queryByName(String name) {
    		List<Person> persons = null;
    		try {
    			persons = client.queryForList("queryPersonByName", name);
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		return persons;
    	}
    
    	@SuppressWarnings({ "unchecked", "deprecation" })
    	public List<Person> queryAllPerson() {
    		List<Person> persons = null;
    		try {
    
    			persons = client.queryForList("queryAllPerson");
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		return persons;
    	}
    
    	@SuppressWarnings("unchecked")
    	public List<Person> queryPersons(Person person) {
    		List<Person> persons = null;
    		try {
    			persons = client.queryForList("queryPersons", person);
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		return persons;
    	}
    	
    	@SuppressWarnings("unchecked")
    	public List<Person> queryPage(Map<String, Object> info) {
    		List<Person> persons = null;
    		try {
    			persons = client.queryForList("queryPage", info);
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		return persons;
    	}
    
    	public static void main(String[] args) {
    		IPersonDao dao = new PersonDaoImp();
    		//添加
    //		Person person = new Person();
    //		person.setName("小明");
    //		person.setAge(1);
    //		dao.addPerson(person);
    		
    		//更新
    //		Person person = new Person();
    //		person.setId(18);
    //		person.setName("小明123");
    //		person.setAge(1);
    //		dao.updatePerson(person);
    		
    		//删除		
    //		dao.deletePersonById(18);
    		//批量删除
    //		List<Integer> ids = new ArrayList<Integer>();
    //		ids.add(3); ids.add(4); ids.add(5);
    //		dao.deleteAll(ids);
    //		System.out.println(ids);
    		
    		//ID查询
    //		Person person = new Person();
    //		person = dao.queryById(19);
    //		System.out.println("查询到的个人信息为:" + person.getId() + " " + person.getAge() + " " + person.getName());
    		
    		//姓名模糊查询
    //		List<Person> persons = dao.queryByName("小米");
    //		for (Person p : persons) {
    //			System.out.println("查询到的个人信息为:" + p.getId() + " " + p.getAge() + " " + p.getName());
    //		}
    		
    		//查询所有
    //		List<Person> persons = dao.queryAllPerson();
    //		for (Person p : persons) {
    //			System.out.println("查询到的个人信息为:" + p.getId() + " " + p.getAge() + " " + p.getName());
    //		}
    		
    		//多条件查询
    //		Person person = new Person();
    //		person.setId(0);
    //		person.setName("小");
    //		person.setAge(20);
    //		List<Person> persons = dao.queryPersons(person);
    //		for (Person p : persons) {
    //			System.out.println("查询到的个人信息为:" + p.getId() + " " + p.getAge() + " " + p.getName());
    //		}
    		
    		//利用Map实现模糊的分页查询
    		Map<String, Object> info = new HashMap<String, Object>();
    		info.put("begin", 0);
    		info.put("pageSize", 100);
    		info.put("id", 0);
    		info.put("name", "小");
    		info.put("age", 20);
    		
    		List<Person> persons = dao.queryPage(info);
    		for (Person p : persons) {
    			System.out.println("查询到的个人信息为:" + p.getId() + " " + p.getAge() + " " + p.getName());
    		}	
    	}
    }
    

      

  • 相关阅读:
    INFORMATION_SCHEMA.INNODB_LOCKS
    INFORMATION_SCHEMA.INNODB_TRX 详解
    用 Flask 来写个轻博客 (9) — M(V)C_Jinja 语法基础快速概览
    自助式BI对比评测:Tableau和FineBI
    4款最具影响力的自助式BI工具
    4款最具影响力的自助式BI工具
    用 Flask 来写个轻博客 (8) — (M)VC_Alembic 管理数据库结构的升级和降级
    用 Flask 来写个轻博客 (7) — (M)VC_models 的关系(many to many)
    zabbix 通过key 获取
    匿名hash
  • 原文地址:https://www.cnblogs.com/E-star/p/3439374.html
Copyright © 2011-2022 走看看