iBatis的基本配置+CRUD操作
首先解释一下CRUD的含义:CRUD是指在做计算处理时的增加(Create)、查询(Retrieve)(重新得到数据)、更新(Update)和删除(Delete) 基本的数据库操作
创建工程iBatisDemo
1:首先要导入关于iBatis的jar包,以及连接数据库的jar包(我用的是MySQL)
2: 创建表t_person, 建立实体类Person
create table t_person( id int primary key auto_increment, name varchar(50), age int );
public class Person { private int id; private String name; private int age; ...... }
3:创建总的XML配置文件
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/Person.xml"/> </sqlMapConfig>
l, SqlMap.properties
SqlMap.properties driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/test username=root password=1
4: 穿件实体类的XML配置文件 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"> <!-- 实体类路径和类名 --> <typeAlias type="com.gbx.Person" alias="person"/> <!-- 数据库实体类的映射 --> <resultMap id="personsResult" class="person" > <result property="id" column="id" /> <result property="name" column="name"/> <result property="age" column="age"/> </resultMap> <!-- SQL语句 --> <insert id="insertPerson" parameterClass="person"> insert into t_person( id, name, age ) values( #id#, #name#, #age# ) </insert> <select id="queryPersonById" parameterClass="int" resultClass="person"> select id, name, age from t_person where id = #id# </select> <select id="queryAll" resultMap="personsResult"> select id, name, age from t_person; </select> <update id="updatePersonById" parameterClass="person"> update t_person set name = #name#, age = #age# where id = #id# </update> <delete id="deletePersonById" parameterClass="int"> delete from t_person where id = #id# </delete> </sqlMap>
5: 写测试类
package com.gbx.dao; import java.awt.Font; import java.io.IOException; import java.io.Reader; import java.sql.SQLException; import java.util.List; import javax.swing.JOptionPane; import com.gbx.Person; import com.ibatis.common.resources.Resources; import com.ibatis.sqlmap.client.SqlMapClient; import com.ibatis.sqlmap.client.SqlMapClientBuilder; public class PersonDao { private static SqlMapClient sqlMapClient = null; static { try { Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml"); sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader); reader.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //C public void insertPerson(Person person) throws SQLException { sqlMapClient.insert("insertPerson", person); } //R public Person queryPersonById(int id) throws SQLException { return (Person)sqlMapClient.queryForObject("queryPersonById", id); } @SuppressWarnings("unchecked") public List<Person> queryALl() throws SQLException { return sqlMapClient.queryForList("queryAll"); } //U public void updatePersonById(Person person) throws SQLException { sqlMapClient.update("updatePersonById", person); } //D public void deletePersonById(int id) throws SQLException { sqlMapClient.delete("deletePersonById", id); } public static void main(String args[]) { //C /*Person person = new Person(); person.setId(3); person.setName("小米3"); person.setAge(57); try { new PersonDao().insertPerson(person); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } StringBuilder br = new StringBuilder(); br.append("添加成功!往数据中添加了如下数据:\n"); br.append("编号 " + "姓名 " + "年龄 \t\n "); br.append(person.getId() + " " + person.getName() + " " + person.getAge() + " \n"); JOptionPane.getRootFrame().setFont(new Font("Arial", Font.BOLD, 20)); JOptionPane.showMessageDialog(null, br.toString());*/ //R /*Person person; try { person = new PersonDao().queryPersonById(1); StringBuilder br = new StringBuilder(); br.append("查询成功!往数据中添加了如下数据:\n"); br.append("编号 " + "姓名 " + "年龄 \t\n "); br.append(person.getId() + " " + person.getName() + " " + person.getAge() + " \n"); JOptionPane.getRootFrame().setFont(new Font("Arial", Font.BOLD, 20)); JOptionPane.showMessageDialog(null, br.toString()); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { List<Person> persons = new PersonDao().queryALl(); for (Person p : persons) { System.out.println(p.getId() + " " +p.getName() + " " + p.getAge()); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }*/ //U /*Person p = new Person(); p.setName("哈哈"); p.setAge(100); p.setId(1);//表示修改1号 try { new PersonDao().updatePersonById(p); System.out.println("修改成功"); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }*/ //D try { new PersonDao().deletePersonById(3); System.out.println("删除成功。。"); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }