<aop:advisor advice-ref=“transactionInterceptor” pointcut=“execution(* com.xbj.service.impl..(…))” />
</aop:config>
db.properties
jdbc.url=jdbc:mysql://localhost:3306/db1
jdbc.driver=com.mysql.jdbc.Driver
jdbc.username=root
jdbc.password=root
UserDAO.java
package com.xbj.dao;
import com.xbj.po.User;
import java.util.List;
public interface UserDAO {
void addUser(User user);
void delUser(Integer id);
void updateUser(User user);
User findUserById(Integer id);
List findAll();
User findUserById2(Integer id);
}
UserDAOImpl.java
package com.xbj.dao.impl;
import com.xbj.dao.UserDAO;
import com.xbj.po.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.ResultSetExtractor;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import org.springframework.stereotype.Repository;
import javax.annotation.Resource;
import javax.sql.DataSource;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
@Repository
public class UserDAOImpl extends JdbcDaoSupport implements UserDAO {
@Resource
public void init(DataSource dataSource){
super.setDataSource(dataSource);
}
public void addUser(User user) {
//String sql, @Nullable Object… args
String sql = “INSERT INTO t_user VALUES (NULL,?,?,?)”;
this.getJdbcTemplate().update(sql, user.getUsername(), user.getPassword(), user.getAge());
}
public void delUser(Integer id) {
String sql = “DELETE FROM t_user WHERE id=?”;
this.getJdbcTemplate().update(sql, id);
}
public void updateUser(User user) {
String sql = “UPDATE t_user SET username=? ,password=?,age=? WHERE id=?”;
this.getJdbcTemplate().update(sql, user.getUsername(), user.getPassword(), user.getAge(), user.getId());
}
//自动映射,但要保证User类中的字段名与数据库的要一致
public User findUserById(Integer id) {
String sql = “SELECT * FROM t_user WHERE id=?”;
List list = this.getJdbcTemplate().query(sql, new BeanPropertyRowMapper(User.class), id);
return list.size() > 0 ? list.get(0) : null;
}
public List findAll() {
String sql = “SELECT * FROM t_user”;
return this.getJdbcTemplate().query(sql, new BeanPropertyRowMapper(User.class));
}
//手动映射
public User findUserById2(Integer id) {
String sql = “SELECT * FROM t_user WHERE id=?”;
return this.getJdbcTemplate().query(sql, new ResultSetExtractor() {
public User extractData(ResultSet rs) throws SQLException, DataAccessException {
User user=new User();
if(rs.next()){
user.setId(rs.getInt(“id”));
user.setUsername(rs.getString(“username”));
user.setPassword(rs.getString(“pwd”));
user.setAge(rs.getInt(“age”));
}
return user;
}
}, id);
}
}
原生测试方法:
package com.xbj;
import org.junit.Test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class Test01 {
@Test
public void t1() throws Exception {
Class.forName(“com.mysql.jdbc.Driver”);
//DriverManager JDBC大管家
Connection connection=DriverManager.getConnection(“jdbc:mysql://localhost:3306/db1”,“root”,“root”);
PreparedStatement psmt=connection.prepareStatement(“SELECT * from t_user WHERE age > ?”);
psmt.setInt(1,33);
ResultSet rs=psmt.executeQuery();
while (rs.next()){
Integer id= rs.getInt(“id”);
String username=rs.getString(“username”);
System.out.println(id+“–”+username);
}
}
}
Spring测试方法;
package com.xbj;
import com.xbj.dao.UserDAO;
import com.xbj.po.User;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.List;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {“classpath:applicationContext.xml”})
public class Test02 {
@Autowired
private UserDAO userDAO;
@Test
public void t1(){
List users=userDAO.findAll();
for (User user:users){
System.out.println(user);
}
}
@Test
public void t2(){
User user=userDAO.findUserById(8);
System.out.println(user);
}
@Test
public void t3(){
User user=new User();
user.setUsername(“hanmeimei”);
user.setPassword(“ok”);
user.setAge(16);
userDAO.addUser(user);
}
@Test
public void t4(){
User user=userDAO.findUserById(5);
user.setUsername(“HMM”);
userDAO.updateUser(user);
}
@Test
public void t5(){
userDAO.delUser(5);
}
@Test
public void t6(){
User user= userDAO.findUserById2(2);
System.out.println(user);
}
}
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
分享
这次面试我也做了一些总结,确实还有很多要学的东西。相关面试题也做了整理,可以分享给大家,了解一下面试真题,想进大厂的或者想跳槽的小伙伴不妨好好利用时间来学习。学习的脚步一定不能停止!
Spring Cloud实战
Spring Boot实战
面试题整理(性能优化+微服务+并发编程+开源框架+分布式)
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
这次面试我也做了一些总结,确实还有很多要学的东西。相关面试题也做了整理,可以分享给大家,了解一下面试真题,想进大厂的或者想跳槽的小伙伴不妨好好利用时间来学习。学习的脚步一定不能停止!
[外链图片转存中…(img-i6Scr0hr-1712812885460)]
Spring Cloud实战
[外链图片转存中…(img-nJPD0QW4-1712812885461)]
Spring Boot实战
[外链图片转存中…(img-RRYsL3YD-1712812885461)]
面试题整理(性能优化+微服务+并发编程+开源框架+分布式)
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-MIgpUa5F-1712812885461)]