框架学习之路二

上一章我们使用了xml解析技术和java反射技术实现了一个简单的功能,这一章我们更进一步,模仿mybatis,实现一个sql映射功能

 

1,安装mysql

2,新建数据库myemployees,并建下表employees

3,创建对应的实体类

package com.epro.vo;

import java.util.Date;

public class Employee {
private int employee_id;
private String first_name;
private String last_name;
private String email;
private String phone_number;
private String job_id;
private double salary;
private float commision_pct;
private int manager_id;
private Date hiredate;
public int getEmployee_id() {
return employee_id;
}
public void setEmployee_id(int employee_id) {
this.employee_id = employee_id;
}
public String getFirst_name() {
return first_name;
}
public void setFirst_name(String first_name) {
this.first_name = first_name;
}
public String getLast_name() {
return last_name;
}
public void setLast_name(String last_name) {
this.last_name = last_name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPhone_number() {
return phone_number;
}
public void setPhone_number(String phone_number) {
this.phone_number = phone_number;
}
public String getJob_id() {
return job_id;
}
public void setJob_id(String job_id) {
this.job_id = job_id;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
public float getCommision_pct() {
return commision_pct;
}
public void setCommision_pct(float commision_pct) {
this.commision_pct = commision_pct;
}
public int getManager_id() {
return manager_id;
}
public void setManager_id(int manager_id) {
this.manager_id = manager_id;
}
public Date getHiredate() {
return hiredate;
}
public void setHiredate(Date hiredate) {
this.hiredate = hiredate;
}
@Override
public String toString() {
return "Employee [employee_id=" + employee_id + ", first_name=" + first_name + ", last_name=" + last_name
+ ", email=" + email + ", phone_number=" + phone_number + ", job_id=" + job_id + ", salary=" + salary
+ ", commision_pct=" + commision_pct + ", manager_id=" + manager_id + ", hiredate=" + hiredate + "]";
}

}

4,mybatis的配置文件mybatisConfig.xml

<?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>
<!-- 1、mybatis使用properties来引入外部properties配置文件的内容
resource 引入类路径下资源
url 引入网络路径或磁盘路径下资源 -->
<properties resource="db.properties"></properties>

<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="org.gjt.mm.mysql.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/myemployees" />
<property name="username" value="root" />
<property name="password" value="mysqladmin" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/epro/util/employeeMapper.xml"></mapper>
</mappers>
</configuration>

5,定义mybatisConfig.xml的解析类XmlPaser.java

package com.epro.util;

import org.dom4j.Document;
import org.dom4j.Element;

public class XmlPaser {
public static String getValueByName(Document doc,String NodeName){
Element el=(Element) doc.selectSingleNode("/configuration/environments/environment/dataSource/property[@name='"+NodeName+"']");
String value=el.attributeValue("value");
return value;
}
}

6,定义数据库的操作类DatabaseConnection.java

package com.epro.dbc;

import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import org.dom4j.Document;
import org.dom4j.io.SAXReader;

import com.epro.util.XmlPaser;

public class DatabaseConnection {
Connection conn=null;
public DatabaseConnection(){
try {
SAXReader reader=new SAXReader();
Document doc=reader.read(new File("src/mybatisConfig.xml"));
String dbdriver=XmlPaser.getValueByName(doc, "dbdriver");
String dburl=XmlPaser.getValueByName(doc, "url");
String dbuser=XmlPaser.getValueByName(doc, "dbuser");
String dbpassword=XmlPaser.getValueByName(doc, "dbpassword");
Class.forName(dbdriver);
this.conn=DriverManager.getConnection(dburl, dbuser, dbpassword);
} catch (Exception e) {
e.printStackTrace();
}
}
public Connection getConnection(){
return this.conn;
}
public void close(){
if(this.conn!=null){
try {
this.conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

 

posted @ 2018-11-15 23:21  xixiyunan  阅读(78)  评论(0编辑  收藏  举报