jdbc
1,提前准备操作(导入连接数据库的jar包并加入小奶瓶,或者用maven创建项目导入java-connecto-mysqlr依赖)
如果版本为某个版本以上需要写驱动com.mysql.cj.jdbc.Driver,并且可能还需要时区(不按照要求就会报错)
//1,加载驱动(此为添加操作)
Class.forName("com.mysql.jdbc.Driver");
//2获取数据库连接
String url1="jdbc:mysql://localhost:3306/mysqldb?
useSSL=true&serverTimezone=GMT%2B8";
String user="root";
String password="1234";
//数据库连接对象
Connection conn= (Connection) DriverManager.getConnection(url1,user,password);
//准备sql语句
String insert_sql="INSERT INTO douban (movieName,score,director) values (?, ?, ?)";
//获取数据库操作对象
PreparedStatement statement=(PreparedStatement)
conn.prepareStatement(insert_sql);
statement.setString(1, movieName);
statement.setString(2, score);
statement.setString(3, director);
int num = statement.executeUpdate();
statement.close();
conn.close();
//以下为select DQL操作!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ResultSet resultSet=statement.executeQuery(insert_sql);
Dept dept=null;
List<Dept> depts=new ArrayList<Dept>();
while(resultSet.next()) {
dept=new Dept();
dept.setDeptno(resultSet.getInt(1));
dept.setDname(resultSet.getString(2));
dept.setLoc(resultSet.getString(3));
depts.add(dept);
}
使用preparedStatement,将sql语句写入方法中,在executeUpdate或者executeQuery方法中不需要书写,且使用preparedStatement防止sql注入
druid数据库池
前提:导入jar包或者写入druidmaven依赖
在com子一层目录下新建properties文件夹写入配置文件,文件目录以及druid.propertis大致配置如下
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///db1?useSSL=false&useServerPrepStmts=true
username=root
password=1234
# 初始化连接数量
initialSize=5
# 最大连接数
maxActive=10
# 最大等待时间
maxWait=3000
在主方法中引用如下
Properties prop = new Properties();
prop.load(new FileInputStream("jdbcdemo/src/druid.properties"));
//4. 获取连接池对象
DataSource dataSource =
DruidDataSourceFactory.createDataSource(prop);
//5. 获取数据库连接 Connection
Connection conn = dataSource.getConnection();
剩下步骤与jdbc一致
比较一下区别(此为精髓之处)
mybaties
前提:导入jar包或者maven项目导入依赖
在模块下的 resources 目录下创建mybatis的配置文件 mybatis-config.xml(文件名称就按照这个写,不要另起别名,记得做过一个springmvc的项目就是因为配置文件的名称不对,找了好久的错误)
配置文件内容大概是
别名标签,连接数据的硬性配置,和mapper标签关联sql语句的xml文件
<mappers> <!--加载sql映射文件--> <mapper resource="UserMapper.xml"/> </mappers>
编写mapper的xml文件,包括namespace属性,id属性,typeresult属性表示返回类型.此处可以用别名从而省略繁琐的包文件
将取到的mysql数据映射到pojo类中
优化下
使用mapper代理方式
原因:上图sqlSession.selectList(test.selectAll),还是存在硬编码问题
定义与SQL映射文件同名的Mapper接口,并且将Mapper接口和SQL映射文件放置在同一目录下
主方法也很重要
mybaties这如果把老师讲的两种(第一种存在硬编码,第二种优化)都理解下来有些绕,建议画一下导引图方便理解,最好是根据老师提供的pdf课件画效果更好;