MyBatis

config:   source folder

1.jdbc.properties

链接数据库的配置文件:配置文件的作用:

MyBatis功能:连接数据库

在javaWeb中:

1、导jar包 mysql-connector-java-5.1.7-bin.jar(链接数据库功能的jar文件)

jar文件就是一个压缩包(里面有链接数据库的java代码)

2、a、加载驱动   b、 建立连接    c、Statment(能执行sql语句、增删改查CRUD) d、ResultSet(存放查询以后的结果集)

package utils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;


public class MySqlUtil {
	public static void main(String[] args) {
		connMysql();
	}
	
	public static void connMysql() {
		try {
			//加载驱动
			Class.forName("com.mysql.jdbc.Driver");
			//建立连接
			//url: 数据库的地址
			String url = "jdbc:mysql://localhost:3306/lucasdb?characterEncoding=utf-8";
			//数据库的账户
			String user = "root";
			String password = "lucas";
			Connection conn = DriverManager.getConnection(url, user, password);
			String selectSql = "select * from student";
			//Statment
			Statement statement = conn.createStatement();
//			statement.execute(selectSql);
			//ResultSet
			ResultSet resultSet = statement.executeQuery(selectSql);
			System.out.println(resultSet);
			while(resultSet.next()) {
				String stuId = resultSet.getString(1);
				String stuName= resultSet.getString(2);
				String stuGender= resultSet.getString(3);
				int stuAge= resultSet.getInt(4);
				System.out.println("stuId:" + stuId + "  stuName:" + stuName + "  stuGender" + stuGender + "  stuAge:" + stuAge);
			}
			
			
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	
		
		
}

驱动、数据库的地址(url)、链接数据库的用户名、链接数据库的密码

jdbc.DriverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/lucasdb?characterEncoding=utf-8
jdbc.username=root
jdbc.password=lucas

2.   

<typeAliases>:  类型 别名

<properties resource="jdbc.properties"></properties>

加载jdbc.properties这个文件,为下边<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>
	<properties resource="jdbc.properties"></properties>
	<typeAliases>
		<!-- <typeAlias type="neimingda.Student" alias="student"/> -->
		<package name="neimingda"/>
	</typeAliases>
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC"></transactionManager>
			<dataSource type="POOLED">
				<property name="driver" value="${jdbc.DriverClassName}"/>
				<property name="url" value="${jdbc.url}"/>
				<property name="username" value="${jdbc.username}"/>
				<property name="password" value="${jdbc.password}"/>
			</dataSource>
		</environment>
	</environments>
	<mappers>
		<package name="dao"/>
	</mappers>
</configuration>

实体类Student

package model;

//Bean   实体类/保存数据
public class Student {
	//静态的属性
	//性别 、 姓名 、 学号 、年龄
	private String stuGender;
	private String stuName;
	private int stuId;
	private int stuAge;
	
	//getter、setter
	
	public String getStuGender() {
		return stuGender;
	}
	
	public void setStuGender(String stuGender) {
		this.stuGender = stuGender;
	}
	public String getStuName() {
		return stuName;
	}
	public void setStuName(String stuName) {
		this.stuName = stuName;
	}
	public int getStuId() {
		return stuId;
	}
	public void setStuId(int stuId) {
		this.stuId = stuId;
	}
	public int getStuAge() {
		return stuAge;
	}
	public void setStuAge(int stuAge) {
		this.stuAge = stuAge;
	}
	@Override
	public String toString() {
		return "Student [stuGender=" + stuGender + ", stuName=" + stuName + ", stuId=" + stuId + ", stuAge=" + stuAge
				+ "]";
	}
	
}

MyBatis核心组件

SqlSessionFactoryBuilder(构造器)

SqlSessionFactory(工厂接口)

SqlSession:   会话(一个连接)

SQL Mapper     映射器   java接口+XML配置文件(注解)

 

面向接口编程、实现查询数据库

配置文件jdbc.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/lucasdb?characterEncoding=utf-8
jdbc.username=root
jdbc.password=lucas
person=child

接口:UserDao

package study2.dao;

import study2.model.Student;

public interface UserDao {
	public Student findStudentById(int id);
}

接口的实现类UserDaoImpl

package study2.dao;

import study2.model.Student;
import utils.MysqlUtil;

public class UserDaoImpl implements UserDao {

	@Override
	public Student findStudentById(int id) {
		//从数据库中根据id查询Student
		MysqlUtil mysqlUtil = new MysqlUtil();
		Student student = mysqlUtil.findStudentById(1);
		
		return student;
	}

}

工具包MysqlUtil

package utils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;

import study2.model.Student;

public class MysqlUtil {
	Connection conn = null;
	//建立连接
	public Connection getConn() throws Exception {
		ReadFileUtil readFileUtil = new ReadFileUtil();
		HashMap map = readFileUtil.getStreamFromFile();
		
		Class.forName(map.get("driver").toString());
		String password = map.get("password").toString();
		String user = map.get("username").toString();
		String url = map.get("url").toString();
	    conn = DriverManager.getConnection(url, user, password);
		return conn;
	}
	
	//操作数据库、查询数据库
	public Student findStudentById(int id) {
		Student student = new Student();
		try {
			Connection conn = getConn();
//			Statement statement = conn.createStatement();
			String selSql = "select * from student where stuId = ?";
//			Statement statement = conn.createStatement();
//			ResultSet resultSet = statement.executeQuery(selSql);
			PreparedStatement prepareStatement = conn.prepareStatement(selSql);
			prepareStatement.setInt(1, id);
			
			ResultSet resultSet = prepareStatement.executeQuery();
			
			//在用resultSet取数据之前必须让cuser指针向下移动一下
			if(resultSet.next()) {
				int stuId = resultSet.getInt(1);
				String stuName = resultSet.getString(2);
				String stuGender = resultSet.getString(3);
				int stuAge = resultSet.getInt(4);
				
				student.setStuAge(stuAge);
				student.setStuGender(stuGender);
				student.setStuId(stuId);
				student.setStuName(stuName);
			}
			
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		
		return student;
	}
	
}

ReadFileUtil

package utils;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Properties;

/**
 * 读外部配置文件
 * @author S
 *
 */
public class ReadFileUtil {
	public void getStreamFromFile(File file) throws IOException {
		FileReader fileReader = new FileReader(file);
		BufferedReader bufferedReader = new BufferedReader(fileReader);
		//读文件中的一行,BufferedReader中有读一行的功能
		String readLine = bufferedReader.readLine();
		
		while(readLine != null) {
			System.out.println(readLine);
			readLine = bufferedReader.readLine();
		}	
	}
	
	/**
	 * 对程序内部配置文件
	 * @return
	 * @throws IOException
	 */
	public HashMap getStreamFromFile() throws IOException {
		HashMap map = new HashMap<String, String>();
		
		InputStream resourceAsStream = ReadFileUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");
		//属性类、空的属性类
		Properties props = new Properties();
		
		props.load(resourceAsStream);
		//属性类中就有内容了
		
		//从props中取出内容的方式
		String driver = props.getProperty("jdbc.driver");
		String url = props.getProperty("jdbc.url");
		String username = props.getProperty("jdbc.username");
		String password = props.getProperty("jdbc.password");
		
		map.put("driver", driver);
		map.put("url", url);
		map.put("username", username);
		map.put("password", password);
		
		return map;
	}
}

测试类:

package study2.test;

import java.io.File;
import java.io.IOException;

import org.junit.Test;

import com.sun.org.apache.bcel.internal.classfile.SourceFile;

import study2.model.Student;
import utils.MysqlUtil;
import utils.ReadFileUtil;

public class TestClazz {
	@Test
	public void test1() {
		MysqlUtil mysqlUtil = new MysqlUtil();
		int stuId = 1;
		Student student = mysqlUtil.findStudentById(stuId);
		System.out.println(student);
	}
	
	@Test
	public void test2() {
		ReadFileUtil readFileUtil = new ReadFileUtil();
		///ShiXun/src/jdbc.properties
//		SourceFile
		File file = new File("d:/jdbc.properties");
		try {
			readFileUtil.getStreamFromFile(file);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值