Spring之ORM,2024年最新三年java开发面试题

<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开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

分享

这次面试我也做了一些总结,确实还有很多要学的东西。相关面试题也做了整理,可以分享给大家,了解一下面试真题,想进大厂的或者想跳槽的小伙伴不妨好好利用时间来学习。学习的脚步一定不能停止!

薪酬缩水,“裸辞”奋战25天三面美团,交叉面却被吊打,我太难了

Spring Cloud实战

薪酬缩水,“裸辞”奋战25天三面美团,交叉面却被吊打,我太难了

Spring Boot实战

薪酬缩水,“裸辞”奋战25天三面美团,交叉面却被吊打,我太难了

面试题整理(性能优化+微服务+并发编程+开源框架+分布式)

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

这次面试我也做了一些总结,确实还有很多要学的东西。相关面试题也做了整理,可以分享给大家,了解一下面试真题,想进大厂的或者想跳槽的小伙伴不妨好好利用时间来学习。学习的脚步一定不能停止!

[外链图片转存中…(img-i6Scr0hr-1712812885460)]

Spring Cloud实战

[外链图片转存中…(img-nJPD0QW4-1712812885461)]

Spring Boot实战

[外链图片转存中…(img-RRYsL3YD-1712812885461)]

面试题整理(性能优化+微服务+并发编程+开源框架+分布式)

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-MIgpUa5F-1712812885461)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值