第一步导入需要的maven:
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-contextartifactId>
<version>5.0.8.RELEASEversion>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-jdbcartifactId>
<version>5.0.8.RELEASEversion>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>8.0.11version>
dependency>
<dependency>
<groupId>commons-dbcpgroupId>
<artifactId>commons-dbcpartifactId>
<version>1.4version>
dependency>
dependencies>
第二步:配置数据源:
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?useAffectedRows=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&useSSL=false
jdbc.username=root
jdbc.password=123456
第三步:配置实体类:
public class Teacher {
Integer id;
String teacher_name;
String gender;
String school_id;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getTeacher_name() {
return teacher_name;
}
public void setTeacher_name(String teacher_name) {
this.teacher_name = teacher_name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getSchool_id() {
return school_id;
}
public void setSchool_id(String school_id) {
this.school_id = school_id;
}
@Override
public String toString() {
return "Teacher{" +
"id=" + id +
", teacher_name='" + teacher_name + '\'' +
", gender='" + gender + '\'' +
", school_id='" + school_id + '\'' +
'}';
}
}
第四步:配置封装JdbcTemplate的类:
使用注解和自动封装的方法。
@Repository
public class MyJdbcTemlate {
@Autowired
private JdbcTemplate jdbcTemplate;
/*
获取单个的列值,或者做统计查询:jdbcTemplate.queryForObject(sql,long.class);
*/
public long testQueryForOne(){
String sql = "SELECT COUNT(id) from teachers";
long count = jdbcTemplate.queryForObject(sql,long.class);
return count;
}
/*
查询集合:jdbcTemplate.query
*/
public List testQueryForList(int id){
String sql = "select id,name 'teacher_name',gender,school_id from teachers where id >?";
RowMapper rowMapper = new BeanPropertyRowMapper<>(Teacher.class);
List list = jdbcTemplate.query(sql,rowMapper,id);
return list;
}
/*
数据库中获取一条数据:jdbcTemplate.queryForObject
RowMapper指定如何去映射结果集的行,常用的实现类是BeanPropertyRowMapper
项目中的bean字段要和数据库对应,可以使用别名的方法,完成列名和属性名的映射 如name 'teacher_name'
不支持级联属性,比如一个bean的属性是另一个bean 因为jdbcTemplate只是一个jdbc的小工具,而不是mybatis等ORM框架
*/
public Teacher testQueryForObject(int id){
String sql = "select id,name 'teacher_name',gender,school_id from teachers where id = ?";
RowMapper rowMapper = new BeanPropertyRowMapper<>(Teacher.class);
Teacher teacher = jdbcTemplate.queryForObject(sql,rowMapper,id);
return teacher;
}
/*
批量更新:jdbcTemplate.batchUpdate
最后一个参数是Object[]的list类型,因为修改一条记录需要一个Object的数组,那么多条数据就需要多个Object数组。
*/
public void testBatchUpdate(){
String sql = "INSERT INTO teachers(name,gender) values(?,?)";
List
第五步:配置xml文件:
"main">
property-placeholder location="db.properties"> property-placeholder>
id="datasource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="url" value="${jdbc.url}">property>
<property name="driverClassName" value="${jdbc.driver}">property>
<property name="username" value="${jdbc.username}">property>
<property name="password" value="${jdbc.password}">property>
id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" p:dataSource="#{datasource}">
最后一步:测试:
public class Main {
private static ApplicationContext applicationContext = null;
public static void main(String[] args) throws SQLException {
applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
MyJdbcTemlate myJdbcTemlate = (MyJdbcTemlate)applicationContext.getBean("myJdbcTemlate");
Teacher teacher = myJdbcTemlate.testQueryForObject(7017);
System.out.println(teacher);
}
}
输出:
Teacher{id=7017, teacher_name='love', gender='1', school_id='2'}