
1.用JavaBean封装一条记录
首先要创建一个类,用来存储数据库中的记录,一条记录中有多个变量,所以该类中也应该有多个变量,该函数的返回值是一个类的对象。
@Test
public static Student SelectById(Long idd) throws Exception {//用对象装一条记录
Connection conn=null;
Statement st=null;
ResultSet rs=null;
Student stu1=null;
//1导入驱动包
try {
//2加载驱动
Class.forName("com.mysql.jdbc.Driver");
//3铺管道,简历Java到MySQL链接
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/login?useSSL=false", "root", "root");
//4创建车
st=conn.createStatement();
//5将sql装车发送到mysql数据库中去
String sql="SELECT * FROM sorce where id="+ idd +"";
rs=st.executeQuery(sql);//结果集
while(rs.next())
{
long id=rs.getLong("id");
String stuname=rs.getString("stuname");
Float javaSorce=rs.getFloat("javaSorce");
//System.out.println(id+" "+stuname+" "+javaSorce);
stu1=new Student(id,stuname,javaSorce);
}
} catch (Exception e) {
// TODO: handle exception
System.out.println("发生错误了");
e.printStackTrace();
}
finally {
//6释放资源
rs.close();
st.close();
conn.close();
}
return stu1;
}
Student类定义为
package cn.java.entity;
public class Student {
@Override
public String toString() {
// TODO Auto-generated method stub
return "Student[id="+id+",stuName="+name+",javaSorce="+javaSorce+"]";
}
private Long id;
private String name;
private Float javaSorce;
public Student() {
super();
// TODO Auto-generated constructor stub
}
public Student(Long id,String stuname,Float javaSorce) {
this.id=id;
this.name=stuname;
this.javaSorce=javaSorce;
// TODO Auto-generated constructor stub
}
}
运行结果
2.用Map封装一条记录。
@Test public static MapSelectById2(Long idd) throws Exception {//用Map装一条数据 Connection conn=null; Statement st=null; ResultSet rs=null; Map aMap=new HashMap (); //1导入驱动包 try { //2加载驱动 Class.forName("com.mysql.jdbc.Driver"); //3铺管道,简历Java到MySQL链接 conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/login?useSSL=false", "root", "root"); //4创建车 st=conn.createStatement(); //5将sql装车发送到mysql数据库中去 String sql="SELECT * FROM sorce where id="+ idd +""; rs=st.executeQuery(sql);//结果集 while(rs.next()) { long id=rs.getLong("id"); String stuname=rs.getString("stuname"); Float javaSorce=rs.getFloat("javaSorce"); //System.out.println(id+" "+stuname+" "+javaSorce); aMap.put("id", id); aMap.put("stuname", stuname); aMap.put("javaSorce", javaSorce); } } catch (Exception e) { // TODO: handle exception System.out.println("发生错误了"); e.printStackTrace(); } finally { //6释放资源 rs.close(); st.close(); conn.close(); } return aMap; }
打印结果为
可以通过两种方法对Map中的每一个键值对进行遍历,第一种方法利用Entry,每一次循环需要取出其中的Key和Value;
第二种方法要在JDK1.8以上才可以使用,利用forEach函数。
3.用List封装多条对象记录,其实就只把多个Student对象封装到List集合中
@Test public static ListSelectById3() throws Exception {//用List装多条对象记录 Connection conn=null; Statement st=null; ResultSet rs=null; Student stu1=null; List stulist=new ArrayList (); //1导入驱动包 try { //2加载驱动 Class.forName("com.mysql.jdbc.Driver"); //3铺管道,简历Java到MySQL链接 conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/login?useSSL=false", "root", "root"); //4创建车 st=conn.createStatement(); //5将sql装车发送到mysql数据库中去 String sql="SELECT * FROM sorce"; rs=st.executeQuery(sql);//结果集 while(rs.next()) { long id=rs.getLong("id"); String stuname=rs.getString("stuname"); Float javaSorce=rs.getFloat("javaSorce"); //System.out.println(id+" "+stuname+" "+javaSorce); stu1=new Student(id,stuname,javaSorce); stulist.add(stu1); } } catch (Exception e) { // TODO: handle exception System.out.println("发生错误了"); e.printStackTrace(); } finally { //6释放资源 rs.close(); st.close(); conn.close(); } return stulist; }
运行结果为
4. 用List集合封装Map,可以装多条记录,返回值为List集合
@Test public static List
运行结果为
5.配置数据库链接的Properties文件,这样的话如果修改数据库,修改配置文件即可,不用在代码中修改。
配置文件
读取文件中的数据,需要先创建一个Properties对象,在写代码过程中,可以简化一些步骤,创建JdbcUtil工具类,再存到eclipse模板中,这样就可以随时方便调用了,可以简化许多过程。
package cn.java.utils;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class jdbcUtil {
private static String driver=null;
private static String url=null;
private static String username=null;
private static String password=null;
static {
// TODO Auto-generated method stub
//读取properties文件
//1.创建一个properties对象
Properties prop=new Properties();
//将prop对象与jdbc与Properties产生关联
InputStream ins = jdbcUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");
try {
prop.load(ins);
//读取数据
driver= prop.getProperty("driver");
url= prop.getProperty("url");
username= prop.getProperty("username");
password= prop.getProperty("password");
//System.out.println(driver+url+username+password);
Class.forName(driver);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static Connection getConn() throws Exception {
return DriverManager.getConnection(url,username,password);
}
public static void close(ResultSet rs,Statement st,Connection conn) throws Exception {
if(rs!=null)
rs.close();
if(st!=null)
st.close();
if(conn!=null)
conn.close();
}
}
如在创建连接时可以 conn=jdbcUtil.getConn();
在释放连接时可以 jdbcUtil.close(rs, st, conn);
6.使用DBUtil框架可以简化很多流程,数据库的增删改查都只需要一行,首先需要导入jar包。
然后就是一下命名规范:
cn.java.dao.Impl:存放 *** 作数据库的代码
cn.java.entity:存放实体类
cn.java.utils:存放工具类
resource:存放配置文件,而且新建文件夹是Source Folder
首先是添加数据,第一种是写死的,第二种可以传递参数,参数用问号代替。
public void Insert() throws Exception { //添加数据
int flag=qr.update(jdbcUtil.getConn(),"INSERT INTO sorce SET id=4,stuname='zqf',javaSorce=80");
System.out.println(flag);
}
public static void Insert2(Long id,String stuname,Float javaSorce) throws Exception//添加数据
{
int flag=qr.update(jdbcUtil.getConn(), "INSERT INTO sorce SET id=?,stuname=?,javaSorce=?", new Object[] {id,stuname,javaSorce});
System.out.println(flag);
}
接下来是使用框架查询数据库记录的四种情况:
@Test
public void getUserById1() throws Exception { //用javabean装一条记录
User user=qr.query(jdbcUtil.getConn(), "SELECT * FROM sorce WHERe id=1", new BeanHandler(User.class));
System.out.println(user);
}
@Test
public void getUserById2() throws Exception { //用Mao封装一条记录
Map hmap=qr.query(jdbcUtil.getConn(), "SELECt * FROM sorce WHERe id=2", new MapHandler());
System.out.println(hmap);
}
@Test
public void getUserById3() throws Exception { //用javabean封装多条记录
List userList=qr.query(jdbcUtil.getConn(), "SELECt * FROM sorce", new BeanListHandler(User.class));
for(User user:userList)
System.out.println(user);
}
@Test
public void getUserById4() throws Exception { //用ListMap封装多条记录
List> stuMap=qr.query(jdbcUtil.getConn(), "SELECt * FROM sorce", new MapListHandler());
for(Map hMap:stuMap)
System.out.println(hMap);
}
使用框架之后省略了很多步骤,配置好文件之后可以直接使用Sql语句对数据库进行 *** 作。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)