首先要加入:ibatis-2.3.4.726.jar和数据库驱动包
1。新建一个数据库连接的属性文件如下:
driver = com.mysql.jdbc.Driver
url = jdbc:mysql://localhost:3306/mp
username = root
password = 123
2。iBatis的配置文件:sqlmap-config.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">
<!-- name部分固定冲部分,value中的${}里的名称要与sqlMap.properties属性文件中一样 -->
<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/mengya/bean/Student.xml"/>
</sqlMapConfig>
sqlMap.properties就是上面的数据库连接的属性文件的名称。
3。构造一个我们数据库操作的对象:
package com.mengya.bean;
import java.sql.Date;
public class Student {
private Integer stu_id;
private String stu_name;
private Integer stu_age;
private float stu_score;
private Date stu_birth;
public Integer getStu_age() {
return stu_age;
}
public void setStu_age(Integer stu_age) {
this.stu_age = stu_age;
}
public Date getStu_birth() {
return stu_birth;
}
public void setStu_birth(Date stu_birth) {
this.stu_birth = stu_birth;
}
public Integer getStu_id() {
return stu_id;
}
public void setStu_id(Integer stu_id) {
this.stu_id = stu_id;
}
public String getStu_name() {
return stu_name;
}
public void setStu_name(String stu_name) {
this.stu_name = stu_name;
}
public float getStu_score() {
return stu_score;
}
public void setStu_score(float stu_score) {
this.stu_score = stu_score;
}
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append("stu_id=");
sb.append(stu_id);
sb.append(" stu_name=");
sb.append(stu_name);
sb.append(" stu_age=");
sb.append(stu_age);
sb.append(" stu_score=");
sb.append(stu_score);
sb.append(" stu_birth=");
sb.append(stu_birth);
return sb.toString();
}
}
4。构造一个iBatis的核心类SqlMapClient的对象的工具类:
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;
public class SqlMapClientUitl {
private static SqlMapClientUitl sqlMapClientUitl;
private static SqlMapClient sqlMapClient = null;
private Reader reader = null;
private SqlMapClientUitl() {
try {
reader = Resources.getResourceAsReader("sqlmap-config.xml");
sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlMapClientUitl createSqlMapClientUitl() {
if (null == sqlMapClientUitl) {
synchronized (SqlMapClientUitl.class) {
if (null == sqlMapClientUitl) {
sqlMapClientUitl = new SqlMapClientUitl();
}
}
}
return sqlMapClientUitl;
}
public SqlMapClient getSqlMapClient() {
return sqlMapClient;
}
}
5。构造IBatis操作数据库的SQL配置文件Student.xml
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="PhoneBook">
<!--
注意:1,SQL语句有返回值类型则需要配置上
2,传参只能传一个,多个可以封装成一个对象。那##之间的参数要与resultClass中的属相同
-->
<typeAlias alias="Student" type="com.mengya.bean.Student" />
<select id="queryAllStu" resultClass="Student">
select * from student
</select>
<select id="queryStuByID" parameterClass="int"
resultClass="Student">
select * from student where stu_id =#id#
</select>
<!-- ##之间的参数要与Student中的属相同 -->
<insert id="addStu" parameterClass="Student">
insert into student
values(#stu_id#,#stu_name#,#stu_age#,#stu_score#,#stu_birth#)
</insert>
<delete id="delStuByID" parameterClass="int">
delete from student where stu_id = #id#
</delete>
<update id="updateStudentByStu" parameterClass="Student">
update student set
stu_name=#stu_name#,stu_age=#stu_age#,stu_score=#stu_score#,stu_birth=#stu_birth#
where stu_id=#stu_id#
</update>
<!-- 模糊查询 -->
<select id="queryStuByLikeName" parameterClass="String" resultClass="Student">
select * from student where stu_name like '%$stu_name$%';
</select>
<!-- 模糊查询,推荐写法这样的查询条件要灵活些 -->
<select id="queryStuByAllLikeName" parameterClass="String" resultClass="Student">
select * from student where stu_name like '#stu_name#';
</select>
</sqlMap>
6。完成的Student的DAO:
import java.sql.SQLException;
import java.util.List;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.mengya.bean.Student;
import com.mengya.dao.inter.StudentDAO;
import com.mengya.util.SqlMapClientUitl;
public class StudentDAOImple implements StudentDAO {
private SqlMapClient sqlMapClient;
@SuppressWarnings("unchecked")
public List<Student> queryAllStu() {
List<Student> stuList = null;
sqlMapClient = SqlMapClientUitl.createSqlMapClientUitl()
.getSqlMapClient();
try {
stuList = sqlMapClient.queryForList("queryAllStu");
} catch (SQLException e) {
e.printStackTrace();
}
return stuList;
}
public Student queryStuByID(int id) {
sqlMapClient = SqlMapClientUitl.createSqlMapClientUitl()
.getSqlMapClient();
Student stu = null;
try {
stu = (Student) sqlMapClient.queryForObject("queryStuByID", id);
} catch (SQLException e) {
e.printStackTrace();
}
return stu;
}
public void addStudent(Student stu) {
sqlMapClient = SqlMapClientUitl.createSqlMapClientUitl()
.getSqlMapClient();
try {
sqlMapClient.insert("addStu", stu);
} catch (SQLException e) {
e.printStackTrace();
}
}
public void delStudent(int id) {
sqlMapClient = SqlMapClientUitl.createSqlMapClientUitl().getSqlMapClient();
try {
sqlMapClient.delete("delStuByID",id);
} catch (SQLException e) {
e.printStackTrace();
}
}
public void updateStu(Student stu) {
sqlMapClient = SqlMapClientUitl.createSqlMapClientUitl().getSqlMapClient();
try {
sqlMapClient.update("updateStudentByStu", stu);
} catch (SQLException e) {
e.printStackTrace();
}
}
@SuppressWarnings("unchecked")
public List<Student> queryStuByLikeName(String name) {
sqlMapClient =SqlMapClientUitl.createSqlMapClientUitl().getSqlMapClient();
try {
return sqlMapClient.queryForList("queryStuByLikeName", name);
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
}
7。测试:
public class StuentTest {
@Test
public void queryAllStu(){
StudentDAO studao = new StudentDAOImple();
List<Student> stuList = studao.queryAllStu();
for(Student stu : stuList){
System.out.println(stu);
}
}
@Test
public void queryStuByID(){
StudentDAO studao = new StudentDAOImple();
System.out.println(studao.queryStuByID(102));
}
@Test
public void addStu(){
StudentDAO studao = new StudentDAOImple();
Student stu = new Student();
stu.setStu_id(null);
stu.setStu_name("小酱油");
stu.setStu_score(85f);
stu.setStu_age(22);
stu.setStu_birth(java.sql.Date.valueOf("1987-09-16"));
studao.addStudent(stu);
}
@Test
public void delStu(){
StudentDAO studao = new StudentDAOImple();
studao.delStudent(103);
}
@Test
public void updStu(){
StudentDAO studao = new StudentDAOImple();
Student stu = studao.queryStuByID(102);
stu.setStu_age(22);
stu.setStu_score(100);
studao.updateStu(stu);
}
@Test
public void queryLikeName(){
StudentDAO studao = new StudentDAOImple();
List<Student> stuList = studao.queryStuByLikeName("小");
for(Student stu : stuList){
System.out.println(stu);
}
}
@Test
public void queryALLLikeName(){
StudentDAO studao = new StudentDAOImple();
List<Student> stuList = studao.queryStuByLikeName("%小%");
for(Student stu : stuList){
System.out.println(stu);
}
}
}
分享到:
相关推荐
首先,`查询`是数据库操作的核心部分,这里指的是通过编程方式与数据库进行交互,获取所需数据。在本案例中,查询采用了`iBatis`的动态模糊查询,这是一种强大的Java持久层框架,允许开发者将SQL语句直接写在XML配置...
本篇文章将深入探讨Ibatis在实际应用中的常见案例,包括多表查询、分页、增删改查、模糊查询以及按指定列查询。 **1. 多表查询** 在实际项目中,多表查询是非常常见的需求。Ibatis通过`<select>`标签和`...
在IT行业中,数据库操作是应用程序开发的核心部分,而Ibatis作为一个优秀的持久层框架,为Java开发者提供了方便快捷的SQL映射功能,使得处理增删查改(CRUD)操作更加简单。本教程将深入讲解如何利用Ibatis实现...
iBATIS 是一款开源的 Java 框架,它为 SQL Maps 和 Objects 的映射提供了简单的方法,使得在 Java 应用程序中处理数据库操作变得更加容易。"iBATIS_02_addSequence_add_del_update_sel_sellike" 这个主题可能涉及到...
ibatis通过简单的XML配置即可完成复杂的数据库操作,极大地简化了开发工作。此外,通过自定义SQL语句,开发者可以更灵活地控制数据库交互逻辑,这对于处理复杂查询或特定需求非常有用。希望本文能够对初学者和开发者...
这里的“ibatis带分页模糊查询已完成”表明已经实现了分页和模糊查询功能。 4. **配置文件**:包括Struts2的配置文件(struts.xml)、Spring的配置文件(spring-context.xml)以及MyBatis的配置文件(mybatis-config.xml...
Mybatis还提供了工具类MybatisUtil进行简单的数据库操作封装,以简化开发流程。 **Struts2与Mybatis整合**: 1. **搭建环境**:引入Struts2和Mybatis的jar包,配置web.xml和mybatis-config.xml,完成初始化设置。 2...
MyBatis是一个非常强大的框架,可以帮助开发者高效地完成数据库相关的开发工作。通过对原生JDBC的改进,解决了许多常见问题,如数据库连接管理、SQL语句硬编码等问题。此外,MyBatis还提供了高级功能,如动态SQL、...