`
javaEEdevelop
  • 浏览: 864001 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

ibatis之helloword

 
阅读更多

jdbc.properties

driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/easier?useUnlcode=true&characterEncoding=UTF-8
username=root
password=123456

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>

  <!-- Configure a built-in transaction manager.  If you're using an 
       app server, you probably want to use its transaction manager 
       and a managed datasource -->
       <properties resource="jdbc.properties"/>
  <transactionManager type="JDBC" commitRequired="false">
    <dataSource type="SIMPLE">
      <property name="JDBC.Driver" value="${driverClass}"/>
      <property name="JDBC.ConnectionURL" value="${url}"/>
      <property name="JDBC.Username" value="${username}"/>
      <property name="JDBC.Password" value="${password}"/>
    </dataSource>
  </transactionManager>


  <sqlMap resource="Student.xml"/>
 

</sqlMapConfig>

Student.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="Student">

  <!-- Use type aliases to avoid typing the full classname every time. -->
  <typeAlias alias="student" type="org.ibatis.bean.Student" />
  
 

	<insert id="addStudent" parameterClass="student" >
	<!-- oracle database sequence
		<selectKey keyProperty="id" resultClass="int">
			select studentPKSequence.nextVal from dual
		</selectKey>
		 -->
			insert into student(sname,sex,birthday,score)
			values  (#sname#,#sex#,#birthday#,#score#)
	</insert>
	<delete id="deleteStudentById" parameterClass="int"   >
		delete from student where id=#id#
	</delete>
	<delete id="deleteStudentByIdAndBySName" parameterClass="student"  >
		delete from student where id=#id# and sname=#sname#
	</delete>
	<!-- 这个#sname# 两边不要加 '' -->
	<update id="updateStudent" parameterClass="student" >
		update student
		set 
		 sname=#sname#,
		 sex=#sex#,
		 birthday=#birthday#, 
		 score=#score#
		 where 
		 id=#id#
	</update>
	<select id="queryAllStudent"  resultClass="student" >
			select * from student;
	</select>
	<!-- 这个like 后面一定要加 '' -->
	<select id="queryAllStudentBySname"  resultClass="student" parameterClass="String"  >
			select * from student
			where sname like '%$sname$%';
	</select>
	<select id="queryStudent"  resultClass="student" parameterClass="int" >
			select * from student 
			where id=#id#
	</select>
</sqlMap>

Student.java

/**
 * 
 */
package org.ibatis.bean;

import java.util.Date;

/**
 * @author 
 * 
 */
public class Student {

	private Integer id;
	private String sname;
	private String sex;
	private Date birthday;
	private float score;

	public Student(){
		
		
	}
	
	

	/**
	 * @param sname
	 * @param sex
	 * @param birthday
	 * @param score
	 */
	public Student(String sname, String sex, Date birthday, float score) {
		this.sname = sname;
		this.sex = sex;
		this.birthday = birthday;
		this.score = score;
	}



	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getSname() {
		return sname;
	}

	public void setSname(String sname) {
		this.sname = sname;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public Date getBirthday() {
		return birthday;
	}

	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}

	public float getScore() {
		return score;
	}

	public void setScore(float score) {
		this.score = score;
	}
	@Override
	public String toString() {
		String contact="id: "+id+"\t" +
				"sname: "+sname+"\t" +
				"sex: "+sex+"\t" +
				"birthday: "+birthday+"\t" +
				"score: "+score+"\t";
		return contact;
	}

}

IStudentDao.java

/**
 * 
 */
package org.ibatis.dao;

import java.util.List;

import org.ibatis.bean.Student;

/**
 * @author 
 * 
 */
public interface IStudentDao {
	
	public void addStudent(Student student);

	public void deleteStudentById(int id);

	public void updateStudent(Student student);

	public List<Student> queryAllStudent();

	public List<Student> queryAllStudentBySname(String sname);

	public Student queryStudent(int id);
	
	public void deleteStudentByIdAndBySName(int id,String sname);

}

 IStudentDaoImpl.java

/**
 * 
 */
package org.ibatis.dao;

import java.sql.SQLException;
import java.util.List;

import org.ibatis.bean.Student;
import org.ibatis.util.SQLUtil;

/**
 * @author 
 *
 */
public class IStudentDaoImpl extends SQLUtil  implements IStudentDao {

	/**
	 *
	 */
	@Override
	public void addStudent(Student student) {
		try {
			System.out
					.println(this.getSqlMapClient().insert("addStudent", student));;
		} catch (SQLException e) {
			 
			e.printStackTrace();
		}

	}

	/**
	 *
	 */
	@Override
	public void deleteStudentById(int id) {
		try {
			System.out
					.println(this.getSqlMapClient().delete("deleteStudentById", id));
			
		} catch (SQLException e) {
			 
			e.printStackTrace();
		}
	}

	/**
	 *
	 */
	@Override
	public List<Student> queryAllStudent() {
		List<Student> students=null;
		try {
			students=(List<Student> )this.getSqlMapClient().queryForList("queryAllStudent");
		} catch (SQLException e) {
			 
			e.printStackTrace();
		}
		return students;
	}

	/**
	 *
	 */
	@Override
	public List<Student> queryAllStudentBySname(String sname) {
		 
		List<Student> students=null;
		try {
			students=(List<Student> )this.getSqlMapClient().queryForList("queryAllStudentBySname",sname);
		} catch (SQLException e) {
			 
			e.printStackTrace();
		}
		return students;
	}

	/**
	 *
	 */
	@Override
	public Student queryStudent(int id) {
		Student student=null;
		try {
			student=(Student)this.getSqlMapClient().queryForObject("queryStudent",id	);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return student;
	}

	/**
	 *
	 */
	@Override
	public void updateStudent(Student student) {
		try {
			System.out
					.println(this.getSqlMapClient().update("updateStudent", student));;
		} catch (SQLException e) {
			 
			e.printStackTrace();
		}
	}

	/**
	 *
	 */
	@Override
	public void deleteStudentByIdAndBySName(int id, String sname) {
		try {
			Student student=new Student();
			student.setId(id);
			student.setSname(sname);
			System.out
					.println(this.getSqlMapClient().delete("deleteStudentByIdAndBySName", student));
			
		} catch (SQLException e) {
			 
			e.printStackTrace();
		}
		
	}

}

 SQLUtil.java

 

/**
 * 
 */
package org.ibatis.util;

import java.io.IOException;
import java.io.Reader;

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;

/**
 * @author 
 *
 */
public abstract class SQLUtil {

	private static SqlMapClient sqlMapClient=null;
	static{
		Reader reader;
		try {
			reader = Resources.getResourceAsReader("SqlMapConfig.xml");
			sqlMapClient=SqlMapClientBuilder.buildSqlMapClient(reader);
		} catch (IOException e) {
			System.out.println("加载SqlMapConfig失败!");
			e.printStackTrace();
		}
		
		
	}
	public static SqlMapClient getSqlMapClient(){
		
		return sqlMapClient;
	}
}
 

 

StudentTest.java

/**
 * 
 */
package junit.test;

import java.util.Date;
import java.util.List;

import org.ibatis.bean.Student;
import org.ibatis.dao.IStudentDaoImpl;
import org.junit.BeforeClass;
import org.junit.Test;

/**
 * @author 
 * 
 */
public class StudentTest {

	private static IStudentDaoImpl studentDao=null;
	/**
	 * @throws java.lang.Exception
	 */
	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
		studentDao=new IStudentDaoImpl();
	}

	@Test
	public void addStudent() {
		
		Student student=new Student("lisan2","男",new Date(),45);
		studentDao.addStudent(student);
		

	}

	@Test
	public void deleteStudentById() {
		studentDao.deleteStudentById(3);
	}
	@Test
	public void deleteStudentByIdAndBySName() {
		studentDao.deleteStudentByIdAndBySName(2,"lisan44");
	}
	
	@Test
	public void updateStudent() {
		Student student=new Student("lisan44","女",new Date(),80);
		student.setId(2);
		studentDao.updateStudent(student);
	}

	@Test
	public void queryAllStudent() {
		List<Student> students=studentDao.queryAllStudent();
		for(Student student:students){
			System.out.println(student);
		}
	}

	@Test
	public void queryAllStudentBySname() {
		//如果里面不写成'%$sname$%';
		//也可以在外面写成'%name%'
		List<Student> students=studentDao.queryAllStudentBySname("l");
		for(Student student:students){
			System.out.println(student);
		}
	}

	@Test
	public void queryStudent() {
		Student student=studentDao.queryStudent(2);
		System.out.println(student);
	}

}

 
ibatis的好处与jdbc比较
1.简化了jdbc的打开和关闭连接
2.简单
3.sql代码和java中的代码分离
4.简化了项目分工
5.增强移植性

缺点
1.只能带一个参数数量,倒是可以带对象啊
2.要多写sql语句

分享到:
评论

相关推荐

    Java面试宝典2010版

    11、iBatis与Hibernate有什么不同? 12、写Hibernate的一对多和多对一双向关联的orm配置? 9、hibernate的inverse属性的作用? 13、在DAO中如何体现DAO设计模式? 14、spring+Hibernate中委托方案怎么配置? 15、...

    最新Java面试宝典pdf版

    11、iBatis与Hibernate有什么不同? 122 12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么...

    Java面试笔试资料大全

    11、iBatis与Hibernate有什么不同? 122 12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么...

    JAVA面试宝典2010

    11、iBatis与Hibernate有什么不同? 122 12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么...

    Java面试宝典-经典

    11、iBatis与Hibernate有什么不同? 122 12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么...

    java面试题大全(2012版)

    11、iBatis与Hibernate有什么不同? 122 12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么...

    Java面试宝典2012版

    11、iBatis与Hibernate有什么不同? 122 12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案...

    java面试宝典2012

    11、iBatis与Hibernate有什么不同? 133 12、写Hibernate的一对多和多对一双向关联的orm配置? 134 9、hibernate的inverse属性的作用? 134 13、在DAO中如何体现DAO设计模式? 134 14、spring+Hibernate中委托方案怎么...

    Java面试宝典2012新版

    11、iBatis与Hibernate有什么不同? 122 12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么...

    Java 面试宝典

    16、下面的代码有什么不妥之处? ............................................................................... 14 17、请说出作用域 public,private,protected,以及不写时的区别 ...........................

Global site tag (gtag.js) - Google Analytics