- MyBatis简介
- 使用数据库专门存放数据
- JAVA使用JDBC连接数据库
- 使用JDBC简单操作数据库
- MyBatis工作流
- 使用MyBatis简单操作数据库
- MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。
- MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。
- MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
官网
我们在开发过程中要把数据和代码分离出来,数据使用数据库进行存放。
使用数据库的好处:
应用与数据分离
便于数据的集中管理
利于应用程序的开发和维护
这里我们主要使用数据库的增删改查操作:
1.增
INSERT INTO 表名("属性名1","属性名2","属性名3","属性名4") VALUES("实例1","实例2","实例3","实例4");
2.删
DELETe FROM 表名 WHERe 条件;
3.改
UPDATe 表名 SET "属性名"="实例" WHERe 条件;
4.查
SELECT * FROM 表名 WHERe 条件;
JAVA使用JDBC连接数据库
JDBC(Java Database Connectivity)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。
连接不同数据库时使用数据库厂商提供的驱动:
步骤1:使用Navicat Premium 新建数据库创建t_user表
步骤2:在EClipse中新建Maven文件
说明:
数据库驱动其实就是对JDBC规范的实现,就是一个jar包。
通过Maven依赖引入
注意驱动要和数据库版本匹配
MySQL数据库要5.7以上才能用8.0的依赖
如果你的MySQL数据库5.7以下,请使用5.x的驱动版本
在pom.xml配置文件中加入数据库驱动
mysql mysql-connector-java 5.1.49
步骤3:编写JAVABean类User.java
package com.test.bean;
public class User {
private Integer id;
private String username;
private String password;
private String realName;
private String phone;
private String email;
private Integer status;
private String tx;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getRealName() {
return realName;
}
public void setRealName(String realName) {
this.realName = realName;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public String getTx() {
return tx;
}
public void setTx(String tx) {
this.tx = tx;
}
}
步骤3:编写JDBC类UserJDBC.java
package com.test.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import com.test.bean.User;
public class UserJDBC {
public static void main(String[] args) throws Exception {
UserJDBC userjdbc = new UserJDBC();
User user = userjdbc.getUserById(2);
System.out.println("查询到该用户的用户名为:" + user.getUsername());
}
public User getUserById(Integer id) throws Exception {
//1、导入驱动jar包
//2、注册驱动
Class.forName("com.mysql.jdbc.Driver");
//3、获取数据库的连接对象
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/user", "root", "123456");
//4、定义sql语句
String sql = "select * from t_user where id=" + id;
//5、获取执行sql语句的对象
Statement stat = con.createStatement();
//6、执行sql并接收返回结果
ResultSet rs = stat.executeQuery(sql);
//7、处理结果
User user = null;
if(rs.next()) {
user = new User();
user.setId(rs.getInt(1));
user.setUsername(rs.getString(2));
user.setPassword(rs.getString(3));
user.setRealName(rs.getString(4));
}
//8、释放资源
stat.close();
con.close();
return user;
}
}
运行结果:
简单的操作JDBC实现去获取数据库数据的操作我们发现JDBC八股文的缺点非常明显:
抽象程度不够,编程比较麻烦。 JDBC比较死板工,当数据库的属性名有几百个时,需要也大量相同的下列代码,工作量非常的大。
使用MyBatis
MyBatis可以解决JDBC的弊端,以下代码MyBatis仅仅使用两行代码就可以搞定。
user = new User();
user.setId(rs.getInt(1));
user.setUsername(rs.getString(2));
user.setPassword(rs.getString(3));
user.setRealName(rs.getString(4));
MyBatis工作流
MyBatis工作流1:
MyBatis工作流2:
- 创建新的Maven项目MybatisTest
- 在pom.xml引入Mybatis依赖
mysql mysql-connector-java 5.1.49 org.mybatis mybatis 3.5.6
- 增加主配置文件mybatis-config.xml切换到source模式加入代码
- 编写用户表对应的实体类User.java
package com.test.bean;
public class User {
private Integer id;
private String username;
private String password;
private String realName;
private String phone;
private String email;
private Integer status;
private String tx;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getRealName() {
return realName;
}
public void setRealName(String realName) {
this.realName = realName;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public String getTx() {
return tx;
}
public void setTx(String tx) {
this.tx = tx;
}
}
- 数据操作对象 UserDao.java
package com.test.dao;
import org.apache.ibatis.annotations.Select;
import com.test.bean.User;
public interface UserDao {
@Select("select * from t_user where id=#{id}")
public User getUserById(Integer id);
}
- 测试类 MybatisTest.java
package com.test.dao;
import java.io.InputStream;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.test.bean.User;
public class MybatisTest {
public static void main(String[] args) {
//读取配置文件
InputStream inputStream = MybatisTest.class.getClassLoader().getResourceAsStream("mybatis-config.xml");
//根据配置文件创建SqlSessionFactory对象,这个相当于JDBC中的数据库连接
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//创建一个数据库会话,通过会话可以执行SQL
SqlSession session = sqlSessionFactory.openSession();
//通过会话获取User表的数据操作对象
UserDao dao = session.getMapper(UserDao.class); //动态代理
//以下是根据业务需要进行数据库操作,这里查询了id为1的用户信息
User zs = dao.getUserById(2);
System.out.println(zs.getUsername() + ":" + zs.getPhone());
}
}
运行结果:



