Jdbc的一般性应用方法总结_jdbc总结

2020-02-27 其他工作总结 下载本文

Jdbc的一般性应用方法总结由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“jdbc总结”。

Jdbc应用方法步骤小结

一、数据源。

MyDataSource.java 里面是连接数据库的相关方法,里面封装了连接参数,连接字符串,已经释放连接,返回连接,返回数据源等方法。(具体代码见附录)

二、接口层

UserDao.java里面是接口,没有具体的实现。全部是对User的增删改查接口。DaoFactory.java 是一个接口工厂,通过类加载器读取一个配置文件daoconfig.properties的读取,就知道具体实现类在哪里,该配置文件里面指明具体哪个文件是用来实现这个UserDao接口的类。

(具体代码见附录)

三、实现类

这个三个类都类里面都写了具体的对User增删改查的实现,当时,其中推荐第二中和第三种,尤其推荐第三种。(具体代码见附录)

四、实体层

这里面是具体的两个Bean,用来做测试用的。

总结:通过上面几个步骤,差不多就可以实现Jdbc操作数据库了。

本人愚笨,在此分享一点点学习心得的总结,里面还会有很多不足的地方,望评判指正,相互学习。高手绕过,新手一起学习。QQ:973519949

附录:

MyDataSource.java 文件清单 package cn.itcast.jdbc.datasource;

import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.util.LinkedList;

//创建连接池

public cla MyDataSource {

private static String url = “jdbc:mysql://localhost:3306/jdbc”;private static String user = “root”;private static String paword = “”;

private static int initCount = 5;//为了保护数据库,我们定义初始化的链接数不超过5个

private static int maxCount = 10;//为了保护数据库,我们定义初始化的链接数不超过5个

private int currentCount = 0;private LinkedList connectionsPool = new LinkedList();

//创建连接

public MyDataSource(){

try {

for(int i = 0;i

connectionsPool.addLast(this.createConnection());

currentCount++;

}

} catch(SQLException e){

throw new ExceptionInInitializerError(e);

} }

//为程序提供创建连接的方法

public Connection getConnection()throws SQLException{

synchronized(connectionsPool){

//当连接池中还有连接可用,就直接返回一个连接

if(this.connectionsPool.size()>0)

return connectionsPool.removeFirst();

//当连接池中没有连接可用,而当前创建的连接数没有达到最大则创建一个连接返回

}

}

} if(this.currentCount

//为程序提供释放连接的方法 public void free(Connection conn){ this.connectionsPool.addLast(conn);}

private Connection createConnection()throws SQLException { return DriverManager.getConnection(url, user, paword);}

UserDao.java 文件清单

package cn.itcast.jdbc.domain;

import java.util.Date;

public cla User {

private int id;private String name;private Date birthday;private float money;

//需要有下面这个无参构造函数,因为好多地方直接new了这个对象 public User(){ }

public User(String name){ }

@Override

public String toString(){ this.name = name;

}

} return this.name;

public String showName(){ }

public int getId(){ } public void setId(int id){ } public String getName(){ } public void setName(String name){ } public Date getBirthday(){ } public void setBirthday(Date birthday){ } public float getMoney(){ } public void setMoney(float money){ } this.money = money;return money;this.birthday = birthday;return birthday;this.name = name;return name;this.id = id;return id;return this.name;

DaoFactory.java 文件清单 package cn.itcast.jdbc.dao;

import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.util.Properties;

public cla DaoFactory {

//工厂一般都使用单例模式

private static UserDao userdao = null;//这句必须放在下面一句的前面,要仔细分析工厂的这个执行过程

private static DaoFactory instance = new DaoFactory();

private DaoFactory(){

try {

Properties prop = new Properties();

//InputStream inStream = new FileInputStream(new File(“src/daoconfig.properties”));

//用下面的ClaLoader()方式更好,不光可以加载类,还可以读取文件,并且避免路径写死

InputStream inStream = DaoFactory.cla.getClaLoader().getResourceAsStream(“daoconfig.properties”);

prop.load(inStream);

String userDaoCla = prop.getProperty(“userDaoCla”);

Cla clazz = Cla.forName(userDaoCla);

userdao =(UserDao)clazz.newInstance();

} catch(Exception e){

throw new ExceptionInInitializerError(e);

}

}

public static DaoFactory getInstance(){

return instance;}

public UserDao getUserDao(){

return userdao;} }

NamedJdbcTemplateTestl.java 文件清单 package cn.itcast.jdbc.spring;

import javax.sql.DataSource;import org.springframework.jdbc.core.BeanPropertyRowMapper;import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource;import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;import org.springframework.jdbc.core.namedparam.SqlParameterSource;import org.springframework.jdbc.support.GeneratedKeyHolder;import org.springframework.jdbc.support.KeyHolder;

import cn.itcast.jdbc.JdbcUtils;import cn.itcast.jdbc.domain.User;

public cla NamedJdbcTemplateTest {

/**

* @param args

*

这里的方法用来插入数据或者更新数据后得到该记录的主键

*

实际开发中比较实用

*/

static NamedParameterJdbcTemplate named = new NamedParameterJdbcTemplate(JdbcUtils.getDatasource());

public static void main(String[] args){

// TODO Auto-generated method stub

}

static User findUser(User user){

//要执行的操作SQL语句

String sql = “select id,name,money,birthday from user where money>:money and id

//new参数源

SqlParameterSource ps = new BeanPropertySqlParameterSource(sql);

//用上面声明的命名参数对象named 执行一个方法,方法参数为sql语句,参数源,bean参数行映射

//将执行方法返回值放在一个Object对象中,这样,返回的结果本来就是Object类型,所以不用强转

Object u = named.queryForObject(sql, ps, new BeanPropertyRowMapper(User.cla));

//返回得到的结果,并且强转为User类型

return(User)u;}

static void addUser(User user){

String sql = ”insert into user(name,birthday,money)values(:name,:birthday,:money)“;

SqlParameterSource ps = new BeanPropertySqlParameterSource(sql);

//下面声明一个KeyHolder相当于一个Map,将named执行SQL语句后的返回结果保存起来

KeyHolder keyHolder = new GeneratedKeyHolder();

named.update(sql, ps, keyHolder);

//取出keyHolder里面的返回值

int id = keyHolder.getKey().intValue();

user.setId(id);} }

SimpleJdbcTemplateTest 文件清单 package cn.itcast.jdbc.spring;

import org.springframework.jdbc.core.BeanPropertyRowMapper;import org.springframework.jdbc.core.simple.ParameterizedBeanPropertyRowMapper;import org.springframework.jdbc.core.simple.ParameterizedRowMapper;import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;

import cn.itcast.jdbc.JdbcUtils;import cn.itcast.jdbc.domain.User;

public cla SimpleJdbcTemplateTest {

/**

* @param args

*

SimpleJdbcTemplate类的用法

*/

//同样是把这样的一个类的实例作为属性方式的进行声明

static SimpleJdbcTemplate simple = new SimpleJdbcTemplate(JdbcUtils.getDatasource());

public static void main(String[] args){

// TODO Auto-generated method stub

}

static User findUser(String name){

String sql = ”select id,name,money,birthday from user where name=?“;

//后面这个name是一个参数,这里是可变参数,如果有多个参数,这后面接着写

Object user = simple.queryForObject(sql, ParameterizedBeanPropertyRowMapper.newInstance(User.cla), name);

return(User)user;}

static T find(String name , Cla clazz){

String sql = ”select id,name,money,birthday from user where name=?";

//后面这个name是一个参数,这里是可变参数,如果有多个参数,这后面接着写

T user = simple.queryForObject(sql, ParameterizedBeanPropertyRowMapper.newInstance(clazz), name);

return user;} }

User.java 文件清单

package cn.itcast.jdbc.domain;

import java.util.Date;

public cla User {

private int id;private String name;private Date birthday;private float money;

//需要有下面这个无参构造函数,因为好多地方直接new了这个对象 public User(){ }

public User(String name){ }

@Override

public String toString(){

}

public String showName(){ } return this.name;return this.name;this.name = name;

} public int getId(){ } public void setId(int id){ } public String getName(){ } public void setName(String name){ } public Date getBirthday(){ } public void setBirthday(Date birthday){ } public float getMoney(){ } public void setMoney(float money){ } this.money = money;return money;this.birthday = birthday;return birthday;this.name = name;return name;this.id = id;return id;

《Jdbc的一般性应用方法总结.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
Jdbc的一般性应用方法总结
点击下载文档
相关专题 jdbc总结 方法 Jdbc 一般性 jdbc总结 方法 Jdbc 一般性
[其他工作总结]相关推荐
    [其他工作总结]热门文章
      下载全文