如题,我每次查询sql的时候就会生成一个sqlsession.
而且查询很慢
这是我的查询的语句,他返回的是100条数据(我数据库里面的数据只有100条),
这是他的大小总和,大概600kb
这是每次查询都会创建的sqlsession语句
我已经配置了连接池,但是他好像没起作用,我是否配置正确
如题,我每次查询sql的时候就会生成一个sqlsession.
而且查询很慢
这是我的查询的语句,他返回的是100条数据(我数据库里面的数据只有100条),
这是他的大小总和,大概600kb
这是每次查询都会创建的sqlsession语句
我已经配置了连接池,但是他好像没起作用,我是否配置正确
让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言问题:每次查询SQL时都会创建一个SQLSession,查询很慢,已配置连接池但好像没起作用,是否配置正确? 回答:
@Service
public class UserServiceImpl implements UserService {
@Autowired
private SqlSessionFactory sqlSessionFactory;
@Override
public List<User> queryUsers() {
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
// 使用SqlSession进行查询操作
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
return userMapper.queryUsers();
}
}
}
<cache eviction="LRU" flushInterval="60000" size="512" readOnly="true"/>
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<property name="driverClassName" value="${driverClassName}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
<property name="initialSize" value="5"/>
<property name="minIdle" value="5"/>
<property name="maxActive" value="20"/>
<property name="maxWait" value="60000"/>
<property name="poolPreparedStatements" value="true"/>
<property name="maxPoolPreparedStatementPerConnectionSize" value="20"/>
<property name="validationQuery" value="select 1"/>
<property name="testWhileIdle" value="true"/>
<property name="testOnBorrow" value="false"/>
<property name="testOnReturn" value="false"/>
<property name="removeAbandoned" value="true"/>
<property name="removeAbandonedTimeout" value="60"/>
<property name="timeBetweenEvictionRunsMillis" value="60000"/>
<property name="minEvictableIdleTimeMillis" value="300000"/>
<property name="connectionProperties" value="clientEncoding=UTF-8"/>
</bean>
以上就是解决每次查询都会创建SQLSession、查询速度慢以及连接池不起作用的一些方法和建议。