创建maven,jdbc连接数据库;

配置maven:

在这里插入图片描述
我们最好是将E:\apache-maven-3.5.4\apache-maven-3.5.4\conf里面的settings文件复制一份然后自己创建一个文件夹单独放在里面:
在这里插入图片描述

我们打开settings进行配置:
1.本地仓库配置localRepository:
在这里插入图片描述

2、配置阿里镜像服务器mirrors标签内部

	 <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>        
    </mirror>

在这里插入图片描述


创建maven:

设置


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果你发现自己默认选择的不是你创建的那个本地仓库的文件夹,你把override打钩,然后自己选择(一般这里会根据你的settings配置的本地仓库路径来自动给你配置好,一般不会出错):
在这里插入图片描述
创建:

在这里插入图片描述

这样就创建成功了!


jdbc连接数据库:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
配置到pom.xml文件中:
在这里插入图片描述
在这里插入图片描述
我们一般普通的连接方式:

  //用户名
        String user = "root";
        //密码
        String password = "123456";
        //url
        String url = "jdbc:mysql://localhost:3306/db2?serverTimezone=GMT%2B8";
        //注册驱动
        Class.forName("com.mysql.cj.jdbc.Driver");
        //建立连接
        Connection connection = DriverManager.getConnection(url, user, password);
        //sql语句
        String sql = "select * f" +
                "rom t_mysql_beauty";
        //预处理sql语句
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        //执行sql语句
        ResultSet resultSet = preparedStatement.executeQuery();
        //处理sql语句执行的结果
        while (resultSet.next()) {
            System.out.println(resultSet.getInt("id"));
            System.out.println(resultSet.getString("name"));
        }
        //释放资源
        connection.close();
        preparedStatement.close();

通过上面这个连接方式我们可以看到这代码是不灵活的,如果有其他的需求有很多的代码的都是重复的,所以我们要进行优化:

  • 1、针对于不同用户,jdbc对应的URL不同,用户名密码不同,其他是一样的;
  • 2、针对于不同的需求,变动的部分是SQL语句,结果的处理不同,其他又是一样的;
  • 3、MySQL版本不一样,驱动包的类的全路径名还不一样;**

将用户名密码跟url写入一个file文件里面然后,如果需要更改直接读文件即可:

mysql.Driver = com.mysql.cj.jdbc.Driver
mysql.url = jdbc:mysql://localhost:3306/db2?serverTimezone=GMT%2B8
mysql.user = root
mysql.password = 123456

自定义工具类:

public class DBAccess {
//	加载驱动
	private static String driver;
	private static String url;
	private static String userName;
	private static String password;
	
	static {
		InputStream in = DBAccess.class.getResourceAsStream("/jdbc.properties");
		Properties p = new Properties();
		try {
			p.load(in);
			driver = p.getProperty("mysql.Driver");
			url = p.getProperty("mysql.url");
			userName = p.getProperty("mysql.userName");
			password = p.getProperty("mysql.password");
			Class.forName(driver);
		} catch (IOException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
	
	public static Connection getConnection() throws SQLException {
		return DriverManager.getConnection(url,userName,password);
	}
	
	public static void close(ResultSet rs,PreparedStatement pst,Connection con) throws SQLException {
		close(rs);
		close(pst);
		close(con);
	}

	private static void close(Connection con) throws SQLException {
		if(con != null) {
			con.close();
		}
		
	}

	private static void close(PreparedStatement pst) throws SQLException {
		if(pst != null) {
			pst.close();
		}
		
	}

	public static void close(ResultSet rs) throws SQLException {
		if(rs != null) {
			rs.close();
		}
		
	}
}

public class BaseDao<T> {

    public List<T> executeQuery(String sql, Class clz) throws Exception {
        List<T> list = new ArrayList<T>();
//		2、建立链接
        Connection con = DBAccess.getConnection();
//		3、预处理sql语句
//		查询出最近写的10篇博客的标题及摘要,展示到控制台
//		最新使用博客系统的用户
        PreparedStatement pst = con.prepareStatement(sql);
//		4、执行sql语句
        ResultSet rs = pst.executeQuery();
        T t;
//		5、处理sql语句执行的结果
        while (rs.next()) {
//			list.add(new Blog(rs.getInt("bid"), rs.getString("title"), rs.getString("summary")));
            /*
             * 1、实例化了一个T对象
             * 2、给这个泛型对象所有属性赋值了
             * 3、将t加入到集合中
             */
            t = (T) clz.newInstance();
            Field[] fields = clz.getDeclaredFields();
            for (Field f : fields) {
                f.setAccessible(true);
                f.set(t, rs.getObject(f.getName()));
            }
            list.add(t);
        }
//		6、释放资源(链接、结果集、预定义对象)
        DBAccess.close(rs, pst, con);
        return list;
    }

}

定义一个博客类:

public class Blog {
    private int bid;
    private String title;
    private String summary;

    public Blog(int bid, String title, String summary) {
        super();
        this.bid = bid;
        this.title = title;
        this.summary = summary;
    }

    public Blog() {
        super();
    }

    public int getBid() {
        return bid;
    }

    public void setBid(int bid) {
        this.bid = bid;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getSummary() {
        return summary;
    }

    public void setSummary(String summary) {
        this.summary = summary;
    }

    @Override
    public String toString() {
        return "Blog [bid=" + bid + ", title=" + title + ", summary=" + summary + "]";
    }

}

定义一个用户类:

public class User {
    private int uid;
    private String userName;
    private String realName;

    public int getUid() {
        return uid;
    }

    public void setUid(int uid) {
        this.uid = uid;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getRealName() {
        return realName;
    }

    public void setRealName(String realName) {
        this.realName = realName;
    }

    @Override
    public String toString() {
        return "User [uid=" + uid + ", userName=" + userName + ", realName=" + realName + "]";
    }

    public User(int uid, String userName, String realName) {
        super();
        this.uid = uid;
        this.userName = userName;
        this.realName = realName;
    }

    public User() {
        super();
    }

}

测试:

public class BlogDao extends BaseDao<Blog> {

    public List<Blog> list() throws Exception {
  //根据自己查询的类容,修改类.class;
        return super.executeQuery("select * from t_p1_blog limit 10", Blog.class);
    }

    public static void main(String[] args) throws Exception {
        BlogDao blogDao = new BlogDao();
        //返回最新查看博客的用户
        List<Blog> list = blogDao.list();
        for (Blog b : list) {
            System.out.println(b);
        }
    }
}

通过代码以上的优化,我们可以看到,sql语句,连接的用户,与查询的代码都不在会是死的;

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值