发表于: 2019-10-27 22:54:09
1 1006
今天完成的事情:
重新写了一遍
jdbctemplate连接数据库
文件结构 没有新建包去逐个分层
都放在一起了
依赖pom .xml
applicationContext.xml文件
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="username" value="root"></property>
<property name="password" value="451976"></property>
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>
<property name="Url" value="jdbc:mysql://localhost:3306/student?serverTimezone=UTC"></property>
</bean>
<!--设置一个名为jdbcTemplate的bean, 引入(ref)dataSource-->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
</beans>
实体类 Student.class 省略set/get
接口 StudentDao
package com.ptteng;
public interface StudentDao {
public void add();
public void addmore();
public void delete();
public void selectId();
public void selectAll();
public void update();
}
MyRowMapper.class文件 jdbctemplate查询时需要调用
public class MyRowMapper implements RowMapper<Student> {
public Student mapRow(ResultSet resultSet, int i) throws SQLException {
//获取结果集中的数据
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
int qq = resultSet.getInt("qq");
String type = resultSet.getString("type");
String time = resultSet.getString("time");
int stunum = resultSet.getInt("stunum");
String daily = resultSet.getString("daily");
String wish = resultSet.getString("wish");
String senior = resultSet.getString("senior");
//把数据封装成 s 对象
Student s = new Student();
s.setId(id);
s.setName(name);
s.setqq(qq);
s.setType(type);
s.settime(time);
s.setStunum(stunum);
s.setdaily(daily);
s.setWish(wish);
s.setsenior(senior);
return s;
}
}
实现接口StudentImpl.class
public class StudentDaoImpl implements StudentDao {
//获取配置文件xml的
ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
//读取applicationcontext.xml中 id为jdbctemplate的bean文件
JdbcTemplate jdbcTemplate = (JdbcTemplate) app.getBean("jdbcTemplate");
//增加单个
@Override
public void add() {
String sql = "insert into bj (name,qq,type,time,stunum,daily,wish,senior) values (?,?,?,?,?,?,?,?)";
jdbcTemplate.update(sql, "夏雪", 454577, "后端", "2019年3月3日", 1502, "1502/daily", "成为程序员", "夏冰雹");
}
//批量增加
@Override
public void addmore(){
String sql = "insert into bj (name,qq,type,time,stunum,daily,wish,senior) values (?,?,?,?,?,?,?,?)";
List<Object[]> batchadd = new ArrayList<>();
batchadd.add(new Object[]{"张三",5455555,"前端","8月8日",001,"001/daily","成为合格的员工","刘三三"});
batchadd.add(new Object[]{"李四",54511555,"后端","8月1日",002,"002/daily","成为合格的程序员","马三三"});
jdbcTemplate.batchUpdate(sql,batchadd);
}
//单个删除
@Override
public void delete() {
String sql = "delete from bj where id=?";
jdbcTemplate.update(sql,10);
}
//根据id查询
/ / 新建MyRowMapper类实现RowMapper接口,重写mapRow方法,指定返回Student对象
@Override
public void selectId() {
String sql = "select * from bj where id =? ";
Student s = jdbcTemplate.queryForObject(sql, new MyRowMapper(), "2");
System.out.println(s);
}
//查询所有
/ / 新建MyRowMapper类实现RowMapper接口,重写mapRow方法,指定返回Student对象
@Override
public void selectAll(){
String sql = "select * from bj";
List<Student> list = jdbcTemplate.query(sql, new MyRowMapper());
System.out.println(list);
}
//单个更改
@Override
public void update() {
String sql = "update bj set type= ? where id =?";
jdbcTemplate.update(sql,"人类行为研究学",8);
}
}
工具类 StudentUtil
里面放了连接数据库的方法,但没用
public class StudentUtil {
private ApplicationContext app = null;
private JdbcTemplate jt = null;
{
app = new ClassPathXmlApplicationContext("ApplicationContext.xml");
jt = (JdbcTemplate) app.getBean("jdbcTemplate");
}
}
明天计划的事情:
继续推进
遇到的问题:
RowMapper.class文件 是配合springjdbc查询使用的
虽然照着教程写出来了
但只是知道它调用了spring的RowMapper方法
照着教程写出来了 但并不懂其原理
收获:
对比昨天写的jdbc
感觉jdbctemplate的好处是
配置文件写完后 开启连接简单 而且不需要去主动关闭
方便了很多
评论