JAVA实现对SQLServer和MySql的通用的增,删,改,查以及查询总数。附带源码和JAR包。

发起这个是因为自己在刚开始写连接SQLServer时,没有可以直接拿来运行的代码,在网上找了半天也没有找到合适的,关键找到的要么缺少数据库参数和代码片段要么就不能直接运行。

这里用的最方便的连接池技术阿里巴巴的Durid,和JdbcTemplate,SQLServer/MySql实现的用java连接两种数据库的通用代码,在以后的项目中和工作中常用的连接方式。

其中JDBCUtils类是通用工具类,一句话都不用改。使用MySql或者SQLServer时只需要更改druid.properties里的参数就可以。

缺少SQLServer的软件和JAR包可到这里免费获取:https://blog.csdn.net/qq_42052589/article/details/106265298


首先提前创建好数据库表,

需要的JAR包:druid-1.0.9.jar,mysql-connector-java-5.1.18-bin.jar,sqljdbc42.jar,和JdbcTemplate需要的jar包。

                         如果缺少jar包也没关系,源码项目可以到GZH【软资库】回复:数据库源码,获得。

代码中用的数据库参数如下:

JAVA实现对SQLServer和MySql的通用的增,删,改,查以及查询总数。附带源码和JAR包。_第1张图片

 

druid.properties:

driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver    #连接SQLServer,若要连接MYSQL只需要改这里面的东西就行。
url=jdbc:sqlserver://localhost:1433;DatabaseName=db01
username=sa
password=123456
# 初始化连接数量
initialSize=5
# 最大连接数
maxActive=10
# 最大等待时间
maxWait=3000

JDBCUtils类:

package util;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

/** #2.1;05/21
 * JDBC工具类 使用Durid连接池*/


public class JDBCUtils {
    private static DataSource ds ;
    static {
        try {
            //1.加载配置文件
            Properties pro = new Properties();
            //使用ClassLoader加载配置文件,获取字节输入流
            InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");
            pro.load(is);

            //2.初始化连接池对象
            ds = DruidDataSourceFactory.createDataSource(pro);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


/**获取连接Connection对象*/
    public static Connection getConnection() throws SQLException {
        return  ds.getConnection();
    }

/**获取连接池对象*/
    public static DataSource getDataSource(){
        return ds;
    }
}

 User类:

//#2.2; 用户的实体类
public class User {
    private int id;
    private String name;
    private String gender;
    private int age;
    private String address;
    private String qq;
    private String email;

    private String username;
    private String password;

    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 int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getQq() {
        return qq;
    }

    public void setQq(String qq) {
        this.qq = qq;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", gender='" + gender + '\'' +
                ", age=" + age +
                ", address='" + address + '\'' +
                ", qq='" + qq + '\'' +
                ", email='" + email + '\'' +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

UserDaoImpl类:

import org.junit.Test;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import util.JDBCUtils;
import java.util.List;
import java.util.Map;
/**
 * 2020/05/21   #用JAVA连接SQLServer。
 * 实现方式:使用Durid连接池 + JdbcTemplate + SQLServer
 */
/**
 *--Junit单元测试,可以让方法独立运行
 * update():执行DML语句。增,删,改语句
 * queryForMap():查询结果,将其封装成Map集合
 * queryForList(sql):查询所有结果,将其封装为List
 * query():查询结果,将结果封装为JavaBean对象
 * queryForObject:查询结果,将结果封装为对象
 */
public class UserDaoImpl {
    private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());

    //01.增加用户
    @Test
    public void test01(){
        String sql="insert into user01 values(?,?,?,?,?,?,null,null);";
        int count=template.update(sql,"Jack","man","85","usa","1234","[email protected]");
        System.out.println("增加用户成功!");
    }

    //02.删除用户
    @Test
    public void delete() {
        //1.定义sql
        String sql = "delete from user01 where id = ?";
        //2.执行sql
        template.update(sql,8);
    }

    //03.修改用户
    @Test
    public void update() {
        String sql = "update user01 set name = ?,gender = ? ,age = ? , address = ? , qq = ?, email = ? where id = ?";
        template.update(sql,"Jesse","man","25","北京","84515","[email protected]",6);
    }

    //04.查询id为1的记录,将其封装成Map集合--注意,查询的结果集长度只能查询1个
    @Test
    public void test04(){
        String sql="select * from user01 where id=?";
        Map map = template.queryForMap(sql, 1);
        System.out.println(map);
    }

    //05.查询所有结果,将其封装为List--注意:将每一条记录封装为一个Map集合,再将Map集合装载到List集合中
    @Test
    public void test05(){
        String sql="select * from user01 where id=1 or id=4";//查询两条数据
        List> mapList = template.queryForList(sql);
        System.out.println(mapList);
    }

    //06.查询所有记录,将其封装为student01对象的List集合
    @Test
    public void test06(){
        String sql="select * from user01";
        //User为数据库user01表的get,set方法
        List list = template.query(sql,new BeanPropertyRowMapper(User.class));
        for (User st:list){
            System.out.println(st);
        }
    }

    //07:根据id查询用户
    @Test
    public void findById() {
        String sql = "select * from user01 where id = ?";
        User user = template.queryForObject(sql, new BeanPropertyRowMapper(User.class), 1);
        System.out.println(user);
    }

    //8:根据用户名和密码查询用户(一般用来返回用户名和密码达到登录验证)
    @Test
    public void findUserByUsernameAndPassword() {
        String sql = "select * from user01 where username = ? and password = ?";
        User user = template.queryForObject(sql, new BeanPropertyRowMapper(User.class), "ywy", "123");
        System.out.println(user);
    }

    //08.查询总记录数
    @Test
    public void sum(){
        String sql="select count(id) from user01";
        //count返回的是Long类型,因此用queryForObject
        Long total = template.queryForObject(sql, Long.class);//Long.class:(sql,xx)第二个参数返回class类型,需要传递将要封装的返回值结果的类型
        System.out.println("总记录数为:"+total);
    }

}

 

 

你可能感兴趣的:(JAVA,jdbc,mysql,java,sqlserver)