发起这个是因为自己在刚开始写连接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【软资库】回复:数据库源码,获得。
代码中用的数据库参数如下:
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