JdbcTemplate
概述和准备工作
- 1、什么是JdbcTemplate
- (1)spring框架对JDBC进行封装,使用JdbcTemplate方便实现对数据库操作
- 2、准备工作
- (1)引入相关依赖
- (2)在spring配置文件中配置数据库连接池的配置,配置JdbcTemplate对象,并且注入dataSource
- 创建service类,创建dao类,在dao类注入jdbcTemplate对象
- (1)引入相关依赖
//在配置文件中需要开启注解扫描
...
//service
@Service
public class UserService{
@Autowired
private UserDao userdao;
}
//dao
@Repository
public class UserDao{
@Autowired //注入jdbcTemplate
private JdbcTemplate jdbcTemplate;
}
JdbcTemplate 操作数据
添加操作
-
1、对应数据库创建相应的实体对象
-
2、在Service和Dao中增加添加方法
//在配置文件中需要开启注解扫描
...
//service
@Service
public class UserService{
@Autowired
private UserDao userdao;
public void add(User user){
userdao.add(user);
}
}
//dao
@Repository
public class UserDao{
@Autowired //注入jdbcTemplate
private JdbcTemplate jdbcTemplate;
public void add(User user){
//update(String sql, Object... obj) (增删改都是使用这个方法)
//1、创建sql语句(修改和删除方法一致,主要不同是sql语句)
String sql = "insert into user values (?,?,?)";
//2、调用方法实现
//int update = jdbcTemplate.update(sql,user.getName,user.getYear,user.id);
String[] users = {user.getName,user.getYear,user.getId};
int update = jdbcTemplate.update(sql,users);
}
}
- 3、在Service和Dao中增加查询单个值
//在配置文件中需要开启注解扫描
...
//service
@Service
public class UserService{
@Autowired
private UserDao userdao;
public int findCount(){
int args = userdao.selectCount();
return args;
}
}
//dao
@Repository
public class UserDao{
@Autowired //注入jdbcTemplate
private JdbcTemplate jdbcTemplate;
public int selectCount(){
//1、创建sql语句
String sql = "select count(1) from user ";
//2、调用方法实现 queryObject(String sql, Class<T> requiret),参数一:SQL语句,参数二:返回参数的类型
int set = jdbcTemplate.queryObject(sql,users);
return set;
}
}
- 3、在Service和Dao中增加查询返回单个对象
//在配置文件中需要开启注解扫描
...
//service
@Service
public class UserService{
@Autowired
private UserDao userdao;
public User findUser(){
User user = userdao.selectUser();
return user;
}
}
//dao
@Repository
public class UserDao{
@Autowired //注入jdbcTemplate
private JdbcTemplate jdbcTemplate;
public User selectUser(){
//1、创建sql语句
String sql = "select * from user where id = ? ";
//2、调用方法实现 queryFowMapperObject(String sql,RowMapper<T> rowMapper, object... args ),
//参数一:SQL语句,
//参数二:RowMapper(是接口,针对返回不同类型数据,使用这个接口里面实现类完成数据封装),
//参数三:sql语句值
User user = jdbcTemplate.queryForObject(sql,new BeanPropertyRowMapper<User>(User.class),1);
return user;
}
}
- 在Service和Dao中增加查询返回对象集合
//在配置文件中需要开启注解扫描
...
//service
@Service
public class UserService{
@Autowired
private UserDao userdao;
public List<User> findAll(){
List<User> users = userdao.selectUserAll();
return users;
}
}
//dao
@Repository
public class UserDao{
@Autowired //注入jdbcTemplate
private JdbcTemplate jdbcTemplate;
public List<User> selectUserAll(){
//1、创建sql语句
String sql = "select * from user ";
//2、调用方法实现 query(String sql,RowMapper<T> rowMapper, object... args ),
//参数一:SQL语句,
//参数二:RowMapper(是接口,针对返回不同类型数据,使用这个接口里面实现类完成数据封装),
//参数三:sql语句值
List<User> users = jdbcTemplate.query(sql,new BeanPropertyRowMapper<User>(User.class));
return users;
}
}
- 在Service和Dao中实现批量添加、删除、修改
//在配置文件中需要开启注解扫描
...
//service
@Service
public class UserService{
@Autowired
private UserDao userdao;
public void batchAdd(List<Object[]> batchArgs){
userdao.batchAdd(batchArgs);
}
}
//dao
@Repository
public class UserDao{
@Autowired //注入jdbcTemplate
private JdbcTemplate jdbcTemplate;
public void batchAdd(List<Object[]> batchArgs){
//1、创建sql语句(修改和删除方法一致,主要不同是sql语句)
String sql = "insert into user values (?,?,?)";
//2、调用方法实现 batchUpdate(String sql,List<Object[]> batchArgs),
//参数一:SQL语句,
//参数二:List集合数组,添加多条记录
int[] ints = jdbcTemplate.batchUpdate(sql,batchArgs);
}
}