1. 程式人生 > >mybatis環境部署以及連線資料庫並對資料的基本操作示例

mybatis環境部署以及連線資料庫並對資料的基本操作示例

 

一,前期準備

1. 由於本示例是利用mysql資料庫對資料的操作,所以需要提前安裝好mysql資料庫

2. mybatics jar包下載

 進入網址 http://www.mybatis.org/mybatis-3/zh/getting-started.html 下載相關jar包,如圖所示 點選mybatics-x.x.x.jar即可下載

3.在資料庫中建表

sql語句如下

CREATE DATABASE`test`;
USE `test`;
CREATE TABLE `classes` (
`cid` INT(10) NOT NULL AUTO_INCREMENT,
`cname` VARCHAR(20),
PRIMARY KEY (`cid`)
);
INSERT INTO `test`.`classes` (`cid`, `cname`) VALUES ('1001', 'YC01');
INSERT INTO `test`.`classes` (`cid`, `cname`) VALUES ('1002', 'YC02');
INSERT INTO `test`.`classes` (`cid`, `cname`) VALUES ('1003', 'YC03');

CREATE TABLE `student` (
`sid` INT(10) NOT NULL AUTO_INCREMENT,
`sname` VARCHAR(20),
`age` INT(4),
`email` VARCHAR(50),
`tid` INT(10),
`cid` INT(10),
PRIMARY KEY (`sid`)
);
INSERT INTO `test`.`student` (`sid`, `sname`, `age`, `email`, `tid`, `cid`) VALUES ('100001', '張三', '17', '
[email protected]
', '1001', '1001'); INSERT INTO `test`.`student` (`sid`, `sname`, `age`, `email`, `tid`, `cid`) VALUES ('10002', '李四', '16', '[email protected]', '1001', '1001'); INSERT INTO `test`.`student` (`sid`, `sname`, `age`, `email`, `tid`, `cid`) VALUES ('10003', '王五', '17', '[email protected]
', '1002', '1002'); CREATE TABLE `teacher` ( `tid` INT(10) NOT NULL AUTO_INCREMENT, `tname` VARCHAR(20), PRIMARY KEY (`tid`) ); INSERT INTO `test`.`teacher` (`tid`, `tname`) VALUES ('10001', '李明'); INSERT INTO `test`.`teacher` (`tid`, `tname`) VALUES ('10002', '張麗');

二,新建Java Project專案mybatis1 

1. 建立包結構如下

2.匯入 mybatis jar包和mysql驅動包,mybatis jar包之前已經下載,mysql驅動包可在mysql安裝目錄下的lib資料夾找到

如圖

3.在專案 src目錄下建立XML 配置檔案 命名為 mybatis-config.xml 此檔案中作用是是配置資料庫連線例項的資料來源(DataSource)和決定事務作用域和控制方式

內容如下

<?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>
	<!-- 工作環境,預設是開發模式 工作模式有work -->
	<environments default="development">
		<!-- 配種工作環境為開發者模式,可配置多個environment連線多個數據庫 如 mysql oracle sqlserver -->
		<environment id="development">
			<!-- 採用jdbc的事務管理 -->
			<transactionManager type="JDBC" />
			<!-- 配置資料來源 -->
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<property name="url" value="jdbc:mysql://localhost:3306/test" />
				<property name="username" value="root" />
				<property name="password" value="a" /> 
			</dataSource>
		</environment>
	</environments>
	<!-- 註冊sql對映檔案 -->
	<mappers>
		<mapper resource="com/dao/StudentMapper.xml" />
		<mapper resource="com/dao/TeacherMapper.xml" />
		<mapper resource="com/dao/ClassesMapper.xml" />

	</mappers>
</configuration>

注意:資料庫密碼需要改成你自己安裝資料庫時設定的密碼

4.在com.pojo下建立每個表對應的實體類,並實現序列化介面,生成必要的方法,如參構造方法,無參構造方法,get,set方法,toString方法等

程式碼如下

package com.pojo;

import java.io.Serializable;

public class Classes implements Serializable {

	private static final long serialVersionUID = -1817410267573286728L;

	private Integer cid;
	private String cname;

	public Classes() {
		super();
		// TODO Auto-generated constructor stub
	}

	public Classes(Integer cid, String cname) {
		super();
		this.cid = cid;
		this.cname = cname;
	}

	public Integer getCid() {
		return cid;
	}

	public void setCid(Integer cid) {
		this.cid = cid;
	}

	public String getCname() {
		return cname;
	}

	public void setCname(String cname) {
		this.cname = cname;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((cid == null) ? 0 : cid.hashCode());
		result = prime * result + ((cname == null) ? 0 : cname.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Classes other = (Classes) obj;
		if (cid == null) {
			if (other.cid != null)
				return false;
		} else if (!cid.equals(other.cid))
			return false;
		if (cname == null) {
			if (other.cname != null)
				return false;
		} else if (!cname.equals(other.cname))
			return false;
		return true;
	}

	@Override
	public String toString() {
		return "Classes [cid=" + cid + ", cname=" + cname + "]";
	}

}
package com.pojo;

import java.io.Serializable;

public class Student implements Serializable {

	private static final long serialVersionUID = 6317146721573156174L;

	private Integer sid;
	private String sname;
	private Integer age;
	private String email;
	private Integer tid;
	private Integer cid;

	public Student() {
		super();
		// TODO Auto-generated constructor stub
	}

	public Student( String sname, Integer age, String email, Integer tid, Integer cid) {
		super();
		this.sname = sname;
		this.age = age;
		this.email = email;
		this.tid = tid;
		this.cid = cid;
	}

	public Student(Integer sid, String sname, Integer age, String email, Integer tid, Integer cid) {
		super();
		this.sid = sid;
		this.sname = sname;
		this.age = age;
		this.email = email;
		this.tid = tid;
		this.cid = cid;
	}

	public Integer getSid() {
		return sid;
	}

	public void setSid(Integer sid) {
		this.sid = sid;
	}

	public String getSname() {
		return sname;
	}

	public void setSname(String sname) {
		this.sname = sname;
	}

	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public Integer getTid() {
		return tid;
	}

	public void setTid(Integer tid) {
		this.tid = tid;
	}

	public Integer getCid() {
		return cid;
	}

	public void setCid(Integer cid) {
		this.cid = cid;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((age == null) ? 0 : age.hashCode());
		result = prime * result + ((cid == null) ? 0 : cid.hashCode());
		result = prime * result + ((email == null) ? 0 : email.hashCode());
		result = prime * result + ((sid == null) ? 0 : sid.hashCode());
		result = prime * result + ((sname == null) ? 0 : sname.hashCode());
		result = prime * result + ((tid == null) ? 0 : tid.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Student other = (Student) obj;
		if (age == null) {
			if (other.age != null)
				return false;
		} else if (!age.equals(other.age))
			return false;
		if (cid == null) {
			if (other.cid != null)
				return false;
		} else if (!cid.equals(other.cid))
			return false;
		if (email == null) {
			if (other.email != null)
				return false;
		} else if (!email.equals(other.email))
			return false;
		if (sid == null) {
			if (other.sid != null)
				return false;
		} else if (!sid.equals(other.sid))
			return false;
		if (sname == null) {
			if (other.sname != null)
				return false;
		} else if (!sname.equals(other.sname))
			return false;
		if (tid == null) {
			if (other.tid != null)
				return false;
		} else if (!tid.equals(other.tid))
			return false;
		return true;
	}

	@Override
	public String toString() {
		return "Student [sid=" + sid + ", sname=" + sname + ", age=" + age + ", email=" + email + ", tid=" + tid
				+ ", cid=" + cid + "]";
	}

}

 

package com.pojo;

import java.io.Serializable;

public class Teacher implements Serializable {

	private static final long serialVersionUID = -5672621111327057252L;

	private Integer tid;
	private String tname;
	public Teacher() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Teacher(Integer tid, String tname) {
		super();
		this.tid = tid;
		this.tname = tname;
	}
	public Integer getTid() {
		return tid;
	}
	public void setTid(Integer tid) {
		this.tid = tid;
	}
	public String getTname() {
		return tname;
	}
	public void setTname(String tname) {
		this.tname = tname;
	}
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((tid == null) ? 0 : tid.hashCode());
		result = prime * result + ((tname == null) ? 0 : tname.hashCode());
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Teacher other = (Teacher) obj;
		if (tid == null) {
			if (other.tid != null)
				return false;
		} else if (!tid.equals(other.tid))
			return false;
		if (tname == null) {
			if (other.tname != null)
				return false;
		} else if (!tname.equals(other.tname))
			return false;
		return true;
	}

	@Override
	public String toString() {
		return "Teacher [tid=" + tid + ", tname=" + tname + "]";
	}
	
	

}

 

5.在 com.dao下建立每個實體類對應的sq對映檔案

程式碼如下

檔名 ClassesMapper.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.dao.ClassesMappper">
  <select id="selectClassesById" resultType="com.pojo.Classes">
    select * from Classes where cid = #{cid}
  </select>
   <select id="selectClassesByAll" resultType="com.pojo.Classes">
    select * from Classes 
  </select>
  <insert id="insertClasses">
    insert into Classes values(null,#{cname})
  </insert>
  <update id="updateClasses">
  	update Classes set cname = #{cname} where cid = #{cid}
  </update>
  <delete id="deleteClasses">
  	delete from Classes where cid = #{cid}
  </delete>
</mapper>

檔名 StudentMapper.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.dao.StudentMapper">
  <select id="selectStudentById" resultType="com.pojo.Student">
    select * from Student where sid = #{sid}
  </select>
  <select id="selectStudentByAll" resultType="com.pojo.Student">
    select * from Student 
  </select>
  <insert id="insertStudent">
    insert into student values(null,#{sname},#{age},#{email},#{tid},#{cid})
  </insert>
  <update id="updateStudent">
  	update student set sname = #{sname},age =#{age} ,email =#{email} ,tid =#{tid} ,cid =#{cid}  where sid = #{sid}
  </update>
  <delete id="deleteStudent">
  	delete from Student where sid = #{sid}
  </delete>
</mapper>

檔名 TeacherMapper.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.dao.TeacherMappper">
  <select id="selectTeacherById" resultType="com.pojo.Teacher">
    select * from Teacher where tid = #{tid}
  </select>
   <select id="selectTeacherByAll" resultType="com.pojo.Teacher">
    select * from Teacher 
  </select>
  <insert id="insertTeacher">
    insert into Teacher values(null,#{tname})
  </insert>
  <update id="updateTeacher">
  	update Teacher set tname = #{tname} where tid = #{tid}
  </update>
  <delete id="deleteTeacher">
  	delete from Teacher where tid = #{tid}
  </delete>
</mapper>

三,執行結果

建立一個測試類Demo 下面只演示對Student資訊的增刪查改操作,相關操作程式碼已做註釋,讀者可自行選擇執行

package com.demo;

import java.io.IOException;
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.pojo.Student;

public class Demo {

	public static void main(String[] args) {
		// 建立SqlSessionFactory會話工廠
		SqlSessionFactory factory = null;
		try {
			factory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));
			//獲取sqlSession與資料庫互動的會話物件
			SqlSession session = factory.openSession();
//			// 查詢一條資料
//			Student student = session.selectOne("com.StudentMapper.selectStudentById", 100001);
//			System.out.println(student);
//			//查詢所有資料
//			List<Student> students = session.selectList("selectStudentByAll");
//			System.out.println(students);
//			//新增資料
//			Student student = new Student("趙六",18,"[email protected]",1002,1002);
//			int len = session.insert("insertStudent",student);
//			if(len >0 ){
//				System.out.println("新增學生資訊成功...");
//			}else{
//				System.out.println("新增學生資訊失敗...");
//			}
//			//修改學生資訊
//			Student student = new Student("趙六",19,"[email protected]",1002,1002);
//			student.setSid(100002);
//			int len = session.insert("updateStudent",student);
//			if(len >0 ){
//				System.out.println("修改學生資訊成功...");
//			}else{
//				System.out.println("修改學生資訊失敗...");
//			}
//			//刪除學生資訊
//			int len = session.delete("deleteStudent",100002);
//			if(len >0 ){
//				System.out.println("修改學生資訊成功...");
//			}else{
//				System.out.println("修改學生資訊失敗...");
//			}
			// 提交事務
			session.commit();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}