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语句
分享到:
相关推荐
11、iBatis与Hibernate有什么不同? 12、写Hibernate的一对多和多对一双向关联的orm配置? 9、hibernate的inverse属性的作用? 13、在DAO中如何体现DAO设计模式? 14、spring+Hibernate中委托方案怎么配置? 15、...
11、iBatis与Hibernate有什么不同? 122 12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么...
11、iBatis与Hibernate有什么不同? 122 12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么...
11、iBatis与Hibernate有什么不同? 122 12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么...
11、iBatis与Hibernate有什么不同? 122 12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么...
11、iBatis与Hibernate有什么不同? 122 12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么...
11、iBatis与Hibernate有什么不同? 122 12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案...
11、iBatis与Hibernate有什么不同? 133 12、写Hibernate的一对多和多对一双向关联的orm配置? 134 9、hibernate的inverse属性的作用? 134 13、在DAO中如何体现DAO设计模式? 134 14、spring+Hibernate中委托方案怎么...
11、iBatis与Hibernate有什么不同? 122 12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么...
16、下面的代码有什么不妥之处? ............................................................................... 14 17、请说出作用域 public,private,protected,以及不写时的区别 ...........................