Java Spring5學(xué)習(xí)之JdbcTemplate詳解
一、JdbcTemplate
Spring 框架對(duì) JDBC 進(jìn)行封裝,使用 JdbcTemplate 方便實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)操作
二、實(shí)戰(zhàn)
2.1 引入依賴
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.24</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-orm -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>5.3.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-tx -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.3.6</version>
</dependency>
2.2 配置連接池
<!--引入外部屬性文件 -->
<context:property-placeholder
location="classpath:jdbc.properties" />
<!-- 數(shù)據(jù)庫(kù)連接池 -->
<bean id="dataSource"
class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
<property name="url" value="${prop.url}" />
<property name="username" value="${prop.userName}" />
<property name="password" value="${prop.password}" />
<property name="driverClassName" value="${prop.driverClass}" />
</bean>
2.3 配置JdbcTemplate 對(duì)象,注入 DataSource
<!-- JdbcTemplate 對(duì)象 -->
<bean id="jdbcTemplate"
class="org.springframework.jdbc.core.JdbcTemplate">
<!--注入 dataSource -->
<property name="dataSource" ref="dataSource"></property>
</bean>
2.4 掃描注解
<!-- 開(kāi)啟注解掃描 -->
<context:component-scan
base-package="cn.zj.aop.an"></context:component-scan>
2.5 創(chuàng)建 service 類,創(chuàng)建 dao 類,在 dao 注入 jdbcTemplate 對(duì)象
@Repository
public class UserDaoImpl implements UserDao {
//注入 JdbcTemplate
@Autowired
private JdbcTemplate jdbcTemplate;
}
@Service
public class UserService {
// 注入 dao
@Autowired
private UserDao userDao;
}
三、操作(CRUD)
實(shí)體類
public class User {
private String userId;
private String username;
private String ustatus;
@Override
public String toString() {
return "User [userId=" + userId + ", username=" + username + ", ustatus=" + ustatus + "]";
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getUstatus() {
return ustatus;
}
public void setUstatus(String ustatus) {
this.ustatus = ustatus;
}
}
3.1 添加
service
//添加
public void addUser(User user) {
userDao.add(user);
}
dao
@Override
public void add(User user) {
// 1 創(chuàng)建 sql 語(yǔ)句
String sql = "insert into t_user values(?,?,?)";
// 2 調(diào)用方法實(shí)現(xiàn)
Object[] args = { user.getUserId(), user.getUsername(), user.getUstatus() };
int update = jdbcTemplate.update(sql, args);
System.out.println(update);
}
測(cè)試
@Test
public void test1() {
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
UserService userService = context.getBean("userService", UserService.class);
User user = new User();
user.setUserId("1");
user.setUsername("java");
user.setUstatus("a");
userService.addUser(user);
}
結(jié)果

3.2 修改
service
//修改
public void updateUser(User user) {
userDao.updateUser(user);
}
dao
@Override
public void updateUser(User user) {
// TODO Auto-generated method stub
String sql = "update t_user set username=?,ustatus=? where userId=?";
// 2 調(diào)用方法實(shí)現(xiàn)
Object[] args = { user.getUsername(), user.getUstatus() ,user.getUserId()};
int update = jdbcTemplate.update(sql, args);
System.out.println(update);
}
測(cè)試
@Test
public void test2() {
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
UserService userService = context.getBean("userService", UserService.class);
User user = new User();
user.setUserId("1");
user.setUsername("javaScrip");
user.setUstatus("abc");
userService.updateUser(user);
}

3.3 刪除
// 刪除
public void deleteUser(String id) {
userDao.deleteUser(id);
}
@Override
public void deleteUser(String id) {
String sql="delete from t_user where userId=?";
int update=jdbcTemplate.update(sql, id);
System.out.println(update);
}
@Test
public void test3() {
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
UserService userService = context.getBean("userService", UserService.class);
userService.deleteUser("1");
}

四、查詢
4.1 查詢總記錄數(shù) jdbcTemplate.queryForObject
@Test
public void test4() {
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
UserService userService = context.getBean("userService", UserService.class);
int count = userService.selectUserCount();
System.out.println("數(shù)據(jù)庫(kù)中共有記錄:"+count);
}
//查詢記錄數(shù)
public int selectUserCount() {
return userDao.selectCount();
}
@Override
public int selectCount() {
String sql = "select count(0) from t_user";
Integer count = jdbcTemplate.queryForObject(sql, Integer.class);
return count;
}
4.2 查詢返回對(duì)象
@Test
public void test5() {
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
UserService userService = context.getBean("userService", UserService.class);
User user=userService.findUserInfo("1");
System.out.println(user);
}
//查詢對(duì)象
public User findUserInfo(String id) {
// TODO Auto-generated method stub
return userDao.findUserInfo(id);
}
@Override
public User findUserInfo(String id) {
String sql = "select userId,username,ustatus from t_user where userId=?";
User user = jdbcTemplate.queryForObject(sql, new
BeanPropertyRowMapper<User>(User. class),id);
return user;
}
4.3 查詢返回集合
@Test
public void test6() {
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
UserService userService = context.getBean("userService", UserService.class);
List<User> list=userService.findAllUser();
System.out.println(list);
}
//查詢返回集合
public List<User> findAllUser(){
return userDao.findAllUser();
}
@Override
public List<User> findAllUser() {
String sql = "select userId,username,ustatus from t_user";
List<User> list = jdbcTemplate.query(sql, new
BeanPropertyRowMapper<User>(User. class));
return list;
}
五、批量操作 jdbcTemplate.batchUpdate
5.1 添加
@Test
public void test7() {
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
UserService userService = context.getBean("userService", UserService.class);
List<Object[]> list = new ArrayList<>();
Object[] o1 = { "11", "易語(yǔ)言", "中文"};
Object[] o2 = { "12", "c++", "cc"};
Object[] o3 = { "13", "MySQL", "數(shù)據(jù)庫(kù)"};
list.add(o1);
list.add(o2);
list.add(o3);
userService.batchAdd(list);
}
//批量添加
public void batchAdd(List<Object[]> list){
userDao.batchAdd(list);
}
@Override
public void batchAdd(List<Object[]> list) {
String sql = "insert into t_user values(?,?,?)";
int[] ints = jdbcTemplate.batchUpdate(sql, list);
System.out.println(ints);
}
5.2 修改
@Test
public void test8() {
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
UserService userService = context.getBean("userService", UserService.class);
List<Object[]> list = new ArrayList<>();
Object[] o1 = { "易語(yǔ)言易", "中文語(yǔ)言","11"};
Object[] o2 = { "c++c", "ccccc","12"};
Object[] o3 = {"MySQL+ORACle", "數(shù)據(jù)庫(kù)數(shù)據(jù)", "13"};
list.add(o1);
list.add(o2);
list.add(o3);
userService.batchUpdate(list);
}
//批量修改
public void batchUpdate(List<Object[]> list) {
userDao.batchUpdate(list);
}
@Override
public void batchUpdate(List<Object[]> list) {
String sql = "update t_user set username=?,ustatus=? where userId=?";
int[] ints = jdbcTemplate.batchUpdate(sql, list);
System.out.println(ints);
}
5.3 刪除
@Test
public void test9() {
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
UserService userService = context.getBean("userService", UserService.class);
List<Object[]> list = new ArrayList<>();
Object[] o1 = { "11"};
Object[] o2 = { "12"};
Object[] o3 = { "13"};
list.add(o1);
list.add(o2);
list.add(o3);
userService.batchDelete(list);
}
//批量刪除
public void batchDelete(List<Object[]> list) {
userDao.batchDelete(list);
}
@Override
public void batchDelete(List<Object[]> list) {
String sql = "delete from t_user where userId=?";
int[] ints = jdbcTemplate.batchUpdate(sql, list);
System.out.println(ints);
}
到此這篇關(guān)于Java Spring5學(xué)習(xí)之JdbcTemplate詳解的文章就介紹到這了,更多相關(guān)Java Spring5之JdbcTemplate內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MyBatis 源碼分析 之SqlSession接口和Executor類
mybatis框架在操作數(shù)據(jù)的時(shí)候,離不開(kāi)SqlSession接口實(shí)例類的作用,下面通過(guò)本文給大家實(shí)例剖析MyBatis 源碼分析之SqlSession接口和Executor類,需要的朋友參考下吧2017-02-02
Java ServletContext對(duì)象原理及功能解析
這篇文章主要介紹了Java ServletContext對(duì)象原理及功能解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06
javamail實(shí)現(xiàn)注冊(cè)激活郵件
這篇文章主要為大家詳細(xì)介紹了javamail實(shí)現(xiàn)注冊(cè)激活郵件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04
詳解Spring Boot使用系統(tǒng)參數(shù)表提升系統(tǒng)的靈活性
Spring Boot項(xiàng)目中常有一些相對(duì)穩(wěn)定的參數(shù)設(shè)置項(xiàng),其作用范圍是系統(tǒng)級(jí)的或模塊級(jí)的,這些參數(shù)稱為系統(tǒng)參數(shù)。這些變量以參數(shù)形式進(jìn)行配置,從而提高變動(dòng)和擴(kuò)展的靈活性,保持代碼的穩(wěn)定性2021-06-06
Java循環(huán)結(jié)構(gòu)之多重循環(huán)及continue?break
這篇文章主要介紹了Java循環(huán)結(jié)構(gòu)之多重循環(huán)及continue?break,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下2022-09-09

