Mybatis用接口XML方式进行增删改查

来源:互联网 发布:最新网络诈骗案件 编辑:程序博客网 时间:2024/06/06 12:45

1.先配好jar包

创建映射文件StudentInfo.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.icss.test.StudentDao">
<resultMap type="com.icss.pojo.StuInfo" id="myStudentInfo"></resultMap><!--type是pojo包里的文件,id自取 -->
<select id="findAll" resultMap="myStudentInfo"><!--跟resultMap标签里的id值一样 -->
select * from si where name like
</select>
<select id="findById" resultMap="myStudentInfo">
select * from si where id=#{id} 
</select>
<insert id="add">
insert into si (id,name,age,sex,tel) values
(id=#{id},name=#{name},age=#{age},sex=#{sex},tel=#{tel})
</insert>
<update id="mod">
update si 
<set>
<if test="id != null">
id=#{id},
</if>
<if test="name != null">
name=#{name},
</if>
<if test="age != null">
age=#{age},
</if>
<if test="sex != null">
sex=#{sex},
</if>
<if test="tel != null">
tel=#{tel}
</if>
</set>
where id=#{id}
</update>
<delete id="Del">
delete from si 
<where>
id=#{id}
</where>
</delete>
<select id="findByIds" resultMap="myStudentInfo">
select *from si 
<where>
<if test="id != null">
and id = #{id}
</if>
<if test="tel != null">
and tel = #{tel}
</if>
</where>
</select>
<select id="findByIdMohu" resultMap="myStudentInfo">
select * from si
<where>
<choose>
<otherwise>
and name like '%${name}%'
</otherwise>
</choose>
</where>
</select>
</mapper>


2.写一个Dao文件

package com.icss.test;


import java.util.List;


import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;


import com.icss.pojo.StuInfo;


public interface StudentDao {
// @Select("select * from si where id=#{id}")
StuInfo findById(String id);//findById是映射文件里面相应标签的id

List<StuInfo> findByIds(@Param("id") String id,@Param("tel") String tel);

List<StuInfo> findByIdMohu(@Param("name") String name);

void Del(String id);
void mod(StuInfo si);
}



3.创建pojo文件,也就是bean文件

package com.icss.pojo;


public class StuInfo {
private String id;
private String name;
private String age;
private String sex;
private String tel;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
@Override
public String toString() {
return "StuInfo [id=" + id + ", name=" + name + ",age=" + age + " ,sex=" + sex + ", tel=" + tel + "]\r\n";
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}

}


4.写一个测试主类

package com.icss.test;


import java.io.IOException;
import java.io.Reader;
import java.util.List;


import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;


import com.icss.pojo.StuInfo;


public class TestFind{

private static SqlSessionFactory ssf;
static{
String resource = "mybatis-config.xml";//配置文件
Reader reader = null;
try {
// 加载配置文件,创建会话工厂
reader = Resources.getResourceAsReader(resource);
ssf = new SqlSessionFactoryBuilder().build(reader);
} catch (IOException e) {
throw new RuntimeException(e);
}finally {
try {
reader.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}

public static void testFindAll() {
System.out.println("---------------testFindAll----------------");
SqlSession session = null;
//try中未抛出编译期异常
try {
//打开一个session
session = ssf.openSession();
// 执行SQL语句,获得结果
List<StuInfo> list = session.selectList("StudentInfoMap.findAll");//映射文件里面的namespace和id
//打印结果
System.out.println(list);
} finally {
session.close();
}
}

public static void testAMDQ(){
System.out.println("---------------testAMDQ----------------");
SqlSession session = ssf.openSession();
try{

//创建要插入学生表的对象
StuInfo stu = new StuInfo();
stu.setId("9");
stu.setName("james");
stu.setAge("10");
stu.setSex("man");
stu.setTel("1323233");
//插入学生记录
session.insert("StudentInfoMap.add", stu);

//验证插入是否成功
StuInfo dbci = session.selectOne("StudentInfoMap.findById", "9");
System.out.println(dbci);

//修改数据库
stu.setAge("11");
stu.setTel("424323");
session.update("StudentInfoMap.mod", stu);

//验证插入是否成功
dbci = session.selectOne("StudentInfoMap.findById", "9");
System.out.println(dbci);

session.delete("StudentInfoMap.del", "9");
dbci = session.selectOne("StudentInfoMap.findById", "9");
System.out.println(dbci);

//正确的业务执行完之后,提交数据
session.commit();

} catch(Exception e) {
//出现异常,必须回滚
session.rollback();
e.printStackTrace();
} finally {
session.close();
}
}

// public static void testFindById(){ //调用接口注解的方法
// System.out.println("------------FindById-------------");
// SqlSession session = ssf.openSession();
//
// StudentDao dao = session.getMapper(StudentDao.class);//创建Dao对象
//
// System.out.println(dao.findById("2"));//对象调用方法传进去参数
//
// session.close();
// }

public static void testFindByIds(){ //接口XML方法
System.out.println("------------FindById-------------");
SqlSession session = ssf.openSession();

StudentDao dao = session.getMapper(StudentDao.class);//创建Dao对象

dao.findByIds("1", null);

session.close();
}

public static void testDel(){ //接口XML方法
System.out.println("------------FindById-------------");
SqlSession session = ssf.openSession();

StudentDao dao = session.getMapper(StudentDao.class);//创建Dao对象

dao.Del("5");
session.commit();
session.close();
}

public static void testFindByIdMohu(){ //接口XML方法
System.out.println("------------FindById-------------");
SqlSession session = ssf.openSession();

StudentDao dao = session.getMapper(StudentDao.class);//创建Dao对象

dao.findByIdMohu("ja");

session.close();
}

public static void testmod(){ //接口XML方法
System.out.println("------------FindById-------------");
SqlSession session = ssf.openSession();
try{
StudentDao dao = session.getMapper(StudentDao.class);//创建Dao对象
dao.findById("1");

StuInfo si = new StuInfo();
si.setId("1");
si.setTel("12121312131");
dao.mod(si);

dao.findById("1");
session.commit();
} catch(Exception e) {
//出现异常,必须回滚
session.rollback();
e.printStackTrace();
} finally {
session.close();
}
}

public static void main(String[] args) throws IOException {
testDel();
}


}


上面的一些数据库都是自己的,另外我还用了log4j来显示,大体就是这样,一般的项目都是用XML接口的方式,接口注解跟一般XML方式几乎不用

后续还会补充

0 0
原创粉丝点击