Java Spring jpa存储库JNDI数据源
嘿,每个人都在使用spring MVC,我想将JPA存储库与JNDI数据源集成,我有一个没有JPA存储库的应用程序这是我的代码: 用于创建我的数据源的mvcConfiguration类:Java Spring jpa存储库JNDI数据源,java,spring-mvc,jpa,spring-data,jndi,Java,Spring Mvc,Jpa,Spring Data,Jndi,嘿,每个人都在使用spring MVC,我想将JPA存储库与JNDI数据源集成,我有一个没有JPA存储库的应用程序这是我的代码: 用于创建我的数据源的mvcConfiguration类: package net.codejava.spring.config; import javax.naming.NamingException; import javax.sql.DataSource; import net.codejava.spring.dao.UserDAO; import net.c
package net.codejava.spring.config;
import javax.naming.NamingException;
import javax.sql.DataSource;
import net.codejava.spring.dao.UserDAO;
import net.codejava.spring.dao.UserDAOImpl;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.jndi.JndiTemplate;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
@Configuration
@ComponentScan(basePackages="net.codejava.spring")
@EnableWebMvc
public class MvcConfiguration extends WebMvcConfigurerAdapter{
@Bean
public ViewResolver getViewResolver(){
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".jsp");
return resolver;
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
}
@Bean
public UserDAO getUserDao() throws NamingException {
JndiTemplate jndiTemplate = new JndiTemplate();
DataSource dataSource = (DataSource) jndiTemplate.lookup("java:comp/env/jdbc/postgres2");
return new UserDAOImpl(dataSource);
}
}
我想用Jpa存储库替换的Dao层
package net.codejava.spring.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import javax.sql.DataSource;
import net.codejava.spring.model.User;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
public class UserDAOImpl implements UserDAO {
private DataSource dataSource;
public UserDAOImpl(DataSource dataSource) {
this.dataSource = dataSource;
}
@Override
public List<User> list() {
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
String sql = "SELECT * from users";
List<User> listUser = jdbcTemplate.query(sql, new RowMapper<User>() {
@Override
public User mapRow(ResultSet rs, int rowNumber) throws SQLException {
User user = new User();
user.setId(rs.getInt("id"));
user.setUsername(rs.getString("username"));
user.setEmail(rs.getString("email"));
return user;
}
});
return listUser;
}
}
包net.codejava.spring.dao;
导入java.sql.ResultSet;
导入java.sql.SQLException;
导入java.util.List;
导入javax.sql.DataSource;
导入net.codejava.spring.model.User;
导入org.springframework.jdbc.core.jdbc模板;
导入org.springframework.jdbc.core.RowMapper;
公共类UserDAOImpl实现UserDAO{
私有数据源;
public UserDAOImpl(数据源数据源){
this.dataSource=数据源;
}
@凌驾
公开名单(){
JdbcTemplate JdbcTemplate=新的JdbcTemplate(数据源);
String sql=“选择*来自用户”;
List listUser=jdbcTemplate.query(sql,新的行映射器(){
@凌驾
公共用户mapRow(ResultSet rs,int rowNumber)引发SQLException{
用户=新用户();
user.setId(rs.getInt(“id”);
user.setUsername(rs.getString(“用户名”);
user.setEmail(rs.getString(“email”);
返回用户;
}
});
返回列表用户;
}
}
和context.xml
<Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Resource name="jdbc/postgres2" auth="Container"
type="javax.sql.DataSource" driverClassName="org.postgresql.Driver"
url="jdbc:postgresql://127.0.0.1:5432/mydb"
username="postgres" password="root" maxActive="20" maxIdle="10" maxWait="-1"/>
</Context>
WEB-INF/WEB.xml
谢谢你的指导 那么,是什么阻止了您这么做?您的问题是什么?您希望在代码中使用JPA实现而不是JdbcTemplate吗?你们的问题是什么?我想把JPA存储库和JNDI数据源集成起来,但我不知道如何集成!!!那么,是什么阻止了您这么做?您的问题是什么?您希望在代码中使用JPA实现而不是JdbcTemplate吗?你们的问题是什么?我想把JPA存储库和JNDI数据源集成起来,但我不知道如何集成!!!