企业级智能软件开发(二)——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

使用JDBC简单操作数据库

步骤1:使用Navicat Premium 新建数据库创建t_user表
1
2
步骤2:在EClipse中新建Maven文件

说明:
数据库驱动其实就是对JDBC规范的实现,就是一个jar包。
通过Maven依赖引入
注意驱动要和数据库版本匹配
MySQL数据库要5.7以上才能用8.0的依赖
如果你的MySQL数据库5.7以下,请使用5.x的驱动版本

在pom.xml配置文件中加入数据库驱动

  <dependencies>
  	<dependency>
    	<groupId>mysql</groupId>
    	<artifactId>mysql-connector-java</artifactId>
    	<version>5.1.49</version>
	</dependency>
  </dependencies>

步骤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;
	}
}

运行结果:

3

简单的操作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:
4
MyBatis工作流2:
5

使用MyBatis简单操作数据库

1

  1. 创建新的Maven项目MybatisTest
  2. 在pom.xml引入Mybatis依赖
<dependencies>
    <dependency>
    	<groupId>mysql</groupId>
    	<artifactId>mysql-connector-java</artifactId>
    	<version>5.1.49</version>
	</dependency>
  			<!-- Mybatis的依赖 -->
	<dependency>
	    <groupId>org.mybatis</groupId>
	    <artifactId>mybatis</artifactId>
	    <version>3.5.6</version>
	</dependency>
  </dependencies>
  1. 增加主配置文件mybatis-config.xml切换到source模式加入代码
<?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/user"/>
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
      </dataSource>
    </environment>
  </environments>
  
  <mappers>
  	<!-- 这里要声明一下我们自定义的DAO类,让Mybatis知道这个类的存在 -->
    <mapper class="com.test.dao.UserDao"/>
  </mappers>
</configuration>

  1. 编写用户表对应的实体类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;
	}
	
	
	
}

  1. 数据操作对象 UserDao.java
package com.test.dao;

import org.apache.ibatis.annotations.Select;

import com.test.bean.User;

/**
 * 注意这里是一个接口(interface),Mybatis会利用动态代理技术在运行过程中动态生成这个类的实现类
 */
public interface UserDao {

	/**
	 * 根据id查询用户信息. @Select 给这个方法绑定了SQL语句
	 * @param id 查询的参数,这个id的内容会自动放到SQL中的占位符#{id}中
	 * @return 数据库查询会返回一行数据,Mybatis会自动映射成一个User对象
	 */
	@Select("select * from t_user where id=#{id}")
	public User getUserById(Integer id);
}
  1. 测试类 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());
		
		
		
		
		
	}

}

运行结果:

6

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liaoMITC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值