java - Spring Hibernate MySQL - 没有连接?

标签 java mysql angularjs spring hibernate

我在连接 mysql 时遇到问题。这是我的代码:

依赖关系:

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.12</version>
    </dependency>
    <dependency>
        <groupId>org.apache.velocity</groupId>
        <artifactId>velocity</artifactId>
        <version>1.7</version>
    </dependency>
    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-mapper-asl</artifactId>
        <version>1.9.13</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.10</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-web-api</artifactId>
        <version>7.0</version>
        <scope>provided</scope>
    </dependency>

    <!-- Spring -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</artifactId>
        <version>${org.springframework-version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${org.springframework-version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${org.springframework-version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>${org.springframework-version}</version>
        <type>jar</type>
        <scope>compile</scope>
    </dependency>

    <!-- Servlet -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>javax.servlet.jsp-api</artifactId>
        <version>2.3.1</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>jstl</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>      
    </dependency>

    <!-- Apache Database Connection Pool -->
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-dbcp2</artifactId>
        <version>2.1</version>
    </dependency>

    <!-- Hibernate -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>4.3.10.Final</version>
    </dependency>

    <!-- MySQL JDBC Driver -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.30</version>       
    </dependency>  
</dependencies>

上下文:

  <mvc:annotation-driven /> 
<mvc:resources mapping="/resources/**" location="/resources/" />
<context:component-scan base-package="com.packt.app" />

<bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
    <property name="resourceLoaderPath" value="/WEB-INF/view/"/>
</bean>

<bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
    <property name="cache" value="true"/>
    <property name="prefix" value=""/>
    <property name="suffix" value=".html"/>
    <property name="exposeSpringMacroHelpers" value="true"/>
</bean>

<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://ADMIN-PC:3306/data"/>
    <property name="username" value="root"/>
    <property name="password" value="root"/>
</bean> 

<bean id="sessionFactory"
      class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="configLocation" value="/WEB-INF/hibernate.cfg.xml" />
</bean>

<tx:annotation-driven />
<bean id="transactionManager"
      class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>

<bean id="testDAO" class="com.packt.app.DAO.Impl.TestDAOImpl">
    <constructor-arg>
        <ref bean="sessionFactory" />
    </constructor-arg>
</bean>   

Controller :

@Controller
@RequestMapping("/tests")
public class TestController {

@Autowired
TestService testService;

@RequestMapping("/testslist.json")
public @ResponseBody List<Test> getTestList() {
    return testService.getTests();
}

@RequestMapping("/layout")
public String getTestPartialPage(ModelMap modelMap) {
    return "tests/layout";
}
}

型号:

@Entity
@Table(name = "test") 
public class Test{
@Id
@GeneratedValue
@Column(name = "id")
private int id;

@Column(name = "name")
private String name;

///gettters and setters
}

实现:

@Repository
public class TestDAOImpl implements TestDAO {

@Autowired
private SessionFactory sessionFactory;

public TestDAOImpl() {
}

public TestDAOImpl(SessionFactory sessionFactory) {
    this.sessionFactory = sessionFactory;
}

@Override
@Transactional
public List<Test> getTests() {
    @SuppressWarnings("unchecked")
    List<Test> tests = (List<Test>) sessionFactory.getCurrentSession()
            .createCriteria(Test.class)
            .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).list();
    return tests;
}
}

Angular Controller :

var TestsController = function($scope, $http) {
$scope.test = {};
$scope.editMode = false;

$scope.fetchTestList = function() {
    $http.get('tests/testslist.json').success(function(testList){
        $scope.tests = testList;
    });
};

$scope.resetTestForm = function() {
    $scope.resetError();
    $scope.test = {};
    $scope.editMode = false;
};

$scope.resetError = function() {
    $scope.error = false;
    $scope.errorMessage = '';
};

$scope.setError = function(message) {
    $scope.error = true;
    $scope.errorMessage = message;
};

$scope.fetchTestList()();

$scope.predicate = 'id';
};

hibernate 配置:

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>        
<session-factory>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">true</property> 

<mapping class="com.packt.app.model.Test"/>   
 </session-factory>
</hibernate-configuration>

应用程序运行时不会出现错误,即使 MySql Server 关闭也是如此。在 html View 中显示列表计数“getTests”为 0。看起来应用程序未与 MySQL 服务器连接。怎么了?请帮助我。

最佳答案

hibernate 配置中的方言缺少 L

我认为应该是 mysqlDialect。

关于java - Spring Hibernate MySQL - 没有连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31863590/

相关文章:

java - 使用 Teradata jdbc 驱动程序设置 FASTLOADCSV Tenacity 和 Sleep

java - 具有同步块(synchronized block)的 Servlet init 方法

sql - 将多个 SQL 字段组合成 1 个输出行

javascript - 按特定顺序创建新数组

javascript - 正则表达式在 JavaScript 中不起作用

javascript - 如何保护 AngularJS $http.post 数据?

java - 创建一个要求输入密码并检查其是否正确的程序

java - 如何在 Web 浏览器内的 Javascript 代码和 Java 代码之间传递信息

java - Hibernate映射异常: unknown entity

mysql - 备份 :run command throws generic error: '' mysqldump"is not recognized as an internal or external command