mybatis小结2

mybatis小结2

面向接口编程

/实体类:映射数据库中的表
public class Student {
	//对应表中的四个字段,一般情况下,最好属性名和字段名保持一致
private Integer id;
private String name;
private Integer age;
private String sex;
public Integer getId() {
	return id;
}
public void setId(Integer id) {
	this.id = id;
}
public String getName() {
	return name;
}
public void setName(String name) {
	this.name = name;
}
public Integer getAge() {
	return age;
}
public void setAge(Integer age) {
	this.age = age;
}
public String getSex() {
	return sex;
}
public void setSex(String sex) {
	this.sex = sex;
}
@Override
public String toString() {
	return "Student [id=" + id + ", name=" + name + ", age=" + age + ", sex=" + sex + "]";
}


}

package com.kang3;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.kang2.Student;

//dao层:数据访问层,和数据库打交道的
public interface StudentDao {
	
public int addStudent(Student student);


//根据id修改学生姓名   多个参数的传递 
//@param注解的参数,在映射文件直接使用
public int  update(@Param("id")int id,@Param("name")String name);

//根據id刪除學生 只有一個參數時,在映射文件中可以直接使用參數名
public int remove(int id);

//查詢操作和其他操作不同之處,是有結果集

//根據id查詢學生信息 ,結果集中的記錄數不會超過一條 返回值就是查詢到 的學生
public Student queryOne(int id);

//查詢全表  結果集中的記錄數有可能是多條
public List<Student> queryAll();


}

package com.kang3;

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import com.kang2.Student;

public class StudentDaoImpl implements StudentDao{

	private SqlSession sqlSession;
	
	public StudentDaoImpl(SqlSession sqlSession) {
		this.sqlSession =sqlSession;
	}
	@Override
	public int addStudent(Student student) {
		
		return sqlSession.insert("com.kang3.StudentDao.addStudent",student);
	}
	@Override
	public int update(int id, String name) {
		// TODO Auto-generated method stub
		return 0;
	}
	@Override
	public int remove(int id) {
		// TODO Auto-generated method stub
		return 0;
	}
	@Override
	public Student queryOne(int id) {
		// TODO Auto-generated method stub
		return null;
	}
	@Override
	public List<Student> queryAll() {
		// TODO Auto-generated method stub
		return null;
	}

}

映射文件

<?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">
  
  <!-- 面向接口编程 
       namespace:必须指定为接口的全限定名称
  -->
  <mapper namespace="com.kang3.StudentDao">
  <!-- sql语句的id必须是接口中对应的方法名 
  不管关联的方法有没有参数 parameterType都可以省略
  -->
  <insert id="addStudent">
 insert into student (name,age,sex) values
 (#{name},#{age},#{sex})
  </insert>
  
  <!-- 当有多个参数
  传递方式:
  1.按照参数的顺序 arg0,arg1,arg2....数字代表第几个参数
  2.按照参数的顺序 param1,param2,param3... 数字代表第几个参数 从1开始
  3.给接口中方法的参数用@param注解修饰作用就是可以给参数命名,在此处就可以使用
  我们给参数的命名
  
  3是推荐使用的方式
   -->
  <update id="update">
  <!-- update student set name =#{arg1} where id =#{arg0} -->
  <!-- update student set name =#{param2} where id =#{param1} -->
  update student set name =#{name} where id =#{id}
  </update>
  
  <delete id="remove">
  delete from student where id = #{id}
  </delete>
  
  <!-- 
  查詢時,必須指定結果集要映射成的數據類型!!
  resultType:指定結果集要映射成java對象的類型
  需要是全限定名稱
  mybaties會將查出來的記錄轉化為指定的對象
  
  當沒有查詢結果時,返回值為null
   -->
  
  <select id="queryOne" resultType="com.kang2.Student">
  select * from student where id=#{id}
  </select>
  <!-- 
  1.此處的Student就是com.yd.modle.Studnet,作用一樣
  2.儅返回值為list或者數組這樣的集合時,resultType指定的是集合中的元素類型!!!
   -->
  
  <select id="queryAll" resultType="Student">
  select * from student
  </select>
  </mapper>

具体使用


public class Test {
	//面向接口编程的具体使用
	public static void main(String[] args) throws IOException {
		InputStream in =  Resources.getResourceAsStream("mybatis-config.xml");
		SqlSessionFactoryBuilder  builder = new SqlSessionFactoryBuilder();
		SqlSessionFactory factory = builder.build(in);
		SqlSession sqlSession = factory.openSession();
        
        SqlSession  sqlSession  = factory.openSession(true);
	
		//根据接口动态生成代理对象
		//参数为接口的字节码对象
		 StudentDao studentDao=sqlSession.getMapper(StudentDao.class);
		 
		 List <Student> students = studentDao.queryAll();
		 System.out.println(students);
		 
		// Student stu = studentDao.queryOne(3);
		 
		// studentDao.remove(1);
	}
	
	
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值