MyBatis------2.MyBatis实现数据库的增删改查(类的实现方式)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34082113/article/details/81876068

首先看下Maven的项目的结构图

一.项目结构

二.步骤

1.准备好数据库,演示的数据库名为student,表名也为stunde,数据库表结构(数据自己填充)

2.导入mysql和mybatis架包

		<!-- mybatis -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.2.8</version>
		</dependency>

		<!-- mysql-connector-java -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.18</version>
		</dependency>

3.创建POJO实体类对象Student.java

package cn.bd.domain;

public class Student {
	private int id;
	private String name;
	private String city;
	private int age;
	
	@Override
	public String toString() {
		return "Student [id=" + id + ", name=" + name + ", city=" + city + ", age=" + age + "]";
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getCity() {
		return city;
	}
	public void setCity(String city) {
		this.city = city;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
}

4.创建StudentDao接口,并定义增删改查的方法

package cn.bd.dao;

import java.util.List;

import cn.bd.domain.Student;

public interface StudentDao {
	List<Student> getAllStudent();
	Student getStudent(int id);
	
	int addStudent(Student stu);
	int delStudent(int id);
	int updateStudent(Student stu);

}

5.定义StudentDaoImp类去实现StudentDao方法

此处的session为mybatis操作数据库的对象,想要拿到SqlSession对象,需要通过SqlSessionFactory,创建方式见上一篇文章,在此,session作为main函数的形参传入

package cn.bd.dao;

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import com.sun.org.apache.regexp.internal.recompile;

import cn.bd.domain.Student;

public class StudentDaoImp implements StudentDao{

	SqlSession session;
	
	public StudentDaoImp(SqlSession session) {
		super();
		this.session = session;
	}

	public List<Student> getAllStudent() {
		
		return session.selectList("studentmapper.getAllStudent");
	}

	public Student getStudent(int id) {
		
		return session.selectOne("studentmapper.getStudent", id);
	}

	public int addStudent(Student stu) {
		
		return session.insert("studentmapper.insertStudent",stu);
	}

	public int delStudent(int id) {

		return session.delete("studentmapper.delStudent", id);
	}

	public int updateStudent(Student stu) {

		return session.delete("studentmapper.updateStudent", stu);
	}

}

6.编写测试类

此处使用了代码块,代码块会在每个函数之前都执行一次,即可以将函数的公共部分提取到代码块中

package cn.bd.tst;

import java.io.IOException;
import java.io.InputStream;
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 cn.bd.dao.StudentDao;
import cn.bd.dao.StudentDaoImp;
import cn.bd.domain.Student;
import junit.framework.TestCase;

public class StudentTest extends TestCase {
	StudentDao studentdao;
	SqlSession session;
	{
		String resource = "mybatis-config.xml";
		InputStream inputStream;
		try {
			inputStream = Resources.getResourceAsStream(resource);
			SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
			
			session = sqlSessionFactory.openSession();
			studentdao=new StudentDaoImp(session);
		} catch (IOException e) {
			e.printStackTrace();
		}

	}
	
	public void testGetAllStudent(){
		
		List<Student> list=studentdao.getAllStudent();
		
		for (Student student : list) {
			System.out.println(student);
		}
	}
	
	public void testGetStudent() {
		Student student = studentdao.getStudent(3);
		System.out.println(student);
	}
	
	public void testAddStudent() {
		Student stu =new Student();
		stu.setCity("aad");
		stu.setName("23dsa");
		stu.setAge(58);
		studentdao.addStudent(stu);
		session.commit();
	}
	
	public void testDelStudent() {
		studentdao.delStudent(11);
		session.commit();
	}
	
	public void testUpdateStudent() {
		Student stu =new Student();
		stu.setId(12);
		stu.setCity("ad");
		stu.setName("12");
		stu.setAge(58);
		studentdao.updateStudent(stu);
		session.commit();
	}

}

7.项目中还缺少了2个xml文件

mybatis-config.xml(mybatis的配置)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/student"/>
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="mapper.xml"/>
    <mapper resource="studentmapper.xml"/>
  </mappers>
</configuration>

studentmapper.xml(定义 sql)

<?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="studentmapper">
  <select id="getAllStudent" resultType="cn.bd.domain.Student">
    select * from student
  </select>
  
  <select id="getStudent" resultType="cn.bd.domain.Student">
  	select * from student where id=#{id}
  </select>
  
  <insert id="insertStudent" parameterType="cn.bd.domain.Student">
  	insert into student(id,name,city,age) values(null,#{name},#{city},#{age}) 
  </insert>
  
  <delete id="delStudent" parameterType="int">
  	delete from student where id=#{id}
  </delete>
  
  <update id="updateStudent" parameterType="cn.bd.domain.Student">
  	update student set name=#{name},
  	 				   city=#{city},
  	 				   age=#{age}
  	 			   where id=#{id}
  </update>
</mapper>

猜你喜欢

转载自blog.csdn.net/qq_34082113/article/details/81876068