mybatis框架:
// 通过注解方式完成ORM映射配置
JPA,hibernate,spring-data-jpa
@Table(name="t_student")
public class Student {
@Id // 映射主键
@Column(name="student_id")
private Integer studentId;
@Column(name="student_name")
private String studentName;
}
首先需要连接到JDBC,导入我们的驱动包以及手写一个工具类
手动实现增删改执行返回影响行数的方法
package com.orm.demo.db;
/**
* @author longhai
* @date 2018/9/19 - 14:06
*/
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
/**
* 操作数据的通过方法
*/
public class DBUtils {
private static final String DRIVER_CLASS = "com.mysql.jdbc.Driver";
private static final String URL = "jdbc:mysql://localhost:3306/practice?useSSL=true";
private static final String USERNAME = "root";
private static final String PASSWORD = "123456";
static {
try {
Class.forName(DRIVER_CLASS);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
/**
* 获取连接对象的方法
*
* @return
*/
private static Connection getConnection() {
try {
return DriverManager.getConnection(URL, USERNAME, PASSWORD);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 编写一个执行通过的增,删,改的方法, 返回受影响的行数
*/
public static int executeUpdate(String sql, Object...parameters) {
try (
Connection connection = getConnection();
PreparedStatement pst = connection.prepareStatement(sql);
) {
//在sql语句里面添加所对应的参数
// 是否设置参数呢
if (parameters.length > 0 ) {
for (int i = 0; i < parameters.length; i++) {
// 循环设置参数
pst.setObject(i + 1, parameters[i]);//注意:此方法在API里面写到,
// 第一个参数不是零,是1,所以要i+1
}
}
return pst.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}
return 0;
}
}
然后创建一个学生对象
package com.orm.demo.model;
import com.orm.demo.annoation.Colum;
import com.orm.demo.annoation.Table;
/**
* @author longhai
* @date 2018/9/19 - 14:29
*/
@Table("t_student")
public class StudentInfo {
@Colum("student_id")
private Integer studentId;
@Colum("student_name")
private String studentName;
@Colum("student_sex")
private String studentSex;
@Colum("student_age")
private int studentAge;
public StudentInfo(Integer studentId, String studentName, String studentSex, int studentAge) {
this.studentId = studentId;
this.studentName = studentName;
this.studentSex = studentSex;
this.studentAge = studentAge;
}
public Integer getStudentId() {
return studentId;
}
public void setStudentId(Integer studentId) {
this.studentId = studentId;
}
public String getStudentName() {
return studentName;
}
public void setStudentName(String studentName) {
this.studentName = studentName;
}
public String getStudentSex() {
return studentSex;
}
public void setStudentSex(String studentSex) {
this.studentSex = studentSex;
}
public int getStudentAge() {
return studentAge;
}
public void setStudentAge(int studentAge) {
this.studentAge = studentAge;
}
}
自定义注解Colum和Table
package com.orm.demo.annoation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* @author longhai
* @date 2018/9/19 - 13:53
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface Colum {
String value() default "";//属性映射的字段名称
}
package com.orm.demo.annoation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* @author longhai
* @date 2018/9/19 - 13:52
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface Table {
String value() default "";//注解映射的表名称
}
具体实现类
注:由于注释比较详细,思路我就不多说了,非常易懂
package com.orm.demo;
import com.orm.demo.annoation.Colum;
import com.orm.demo.annoation.Table;
import com.orm.demo.db.DBUtils;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
/**
* @author longhai
* @date 2018/9/19 - 14:36
*
*
* javabean操作的通用工具类
*
* 目标: 把entity对象传入到方法中完成该对象的持久化。
* 核心: 反射
*
*
*/
public class BeanUtil {
public static int save(T entity){
// 定义存储SQL语句占位符对应值的集合(也就是属性字段所对应的值)
List
import com.orm.demo.model.StudentInfo;
/**
* @author longhai
* @date 2018/9/19 - 14:53
*/
public class TestORM {
public static void main(String[] args) {
// 创建一个学生对象
StudentInfo studentInfo = new StudentInfo(1001, "寒梅", "男", 20);
int row = BeanUtil.save(studentInfo);
System.out.println(row > 0 ? "成功" : "失败");
}
}
我的数据库是这样的 :表名T_STUDENT 字段:STUDENT_ID,STUDENT_NAME,STUDENT_AGE,STUDENT_SEX
测试一下,我们已经将这一条信息添加到数据库中了!
大家理解了大概的过程了吗? 去动手吧,写出自己想要的功能!框架其实并没有那么困难,要多动手多动脑!
对你有帮助的就点个赞,让天下没有难学的编程