IDEA中使用hibernate连接sqlserver

IDEA中使用hibernate连接sqlserver

使用IDEA建立的hibernate工程项目是普通的JavaWeb项目

在这里插入图片描述

User.java

package com.mengma.domain;

public class User {
    
    
    private Integer id; // 唯一标识id
    private String name; // 姓名
    private Integer age; // 年龄
    private String gender; // 性别

    public Integer getId() {
    
    
        return id;
    }

    public void setId(Integer id) {
    
    
        this.id = id;
    }

    public String getName() {
    
    
        return name;
    }
    public void setName(String name) {
    
    
        this.name = name;
    }

    public Integer getAge() {
    
    
        return age;
    }

    public void setAge(Integer age) {
    
    
        this.age = age;
    }

    public String getGender() {
    
    
        return gender;
    }

    public void setGender(String gender) {
    
    
        this.gender = gender;
    }

    public User(Integer id, String name, Integer age, String gender) {
    
    
        this.id = id;
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    public User() {
    
    
    }
}

User.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <!-- name代表的是类名,table代表的是表名 -->
    <class name="com.mengma.domain.User" table="users">
        <!-- name代表的是User类中的id属性,column代表的是user表中的主键id -->
        <id name="id" column="id">
            <!-- 主键生成策略 -->
            <generator class="native" />
        </id>
        <!-- 其他属性使用property标签映射 -->
        <property name="name" type="java.lang.String" column="name"/>
        <property name="age" type="integer" column="age" />
        <property name="gender" type="java.lang.String" column="gender" />
    </class>
</hibernate-mapping>

hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <!-- 指定方言 -->
        <!--配置数据库连接属性-->
        <property name="dialect">
<!--            org.hibernate.dialect.MySQL5Dialect-->
            org.hibernate.dialect.SQLServerDialect
        </property>
        <!-- 链接数据库url -->
        <property name="connection.url">
<!--            <![CDATA[jdbc:mysql://localhost:3306/hibernate?useUnicode=true&characterEncoding=utf-8]]>-->
            jdbc:sqlserver://localhost:1433;databaseName=hibernate
        </property>
        <!-- 连接数据库的用户名 -->
        <property name="connection.username">
            sa
        </property>
        <!-- 数据库的密码 -->
        <property name="connection.password">
            123456
        </property>
        <!-- 数据库驱动 -->
        <property name="connection.driver_class">
            com.microsoft.sqlserver.jdbc.SQLServerDriver
        </property>
        <!-- 在控制台显示sql语句 -->
        <property name="show_sql">
            true
        </property>
        <!-- 格式化sql语句 -->
        <property name="format_sql">true</property>
        <!-- 映射文件配置 -->
        <mapping resource="com/mengma/domain/User.hbm.xml" />
    </session-factory>
</hibernate-configuration>

log4j.properties`

# For Testing Guys
# Set root logger level to error
log4j.rootLogger=INFO, Console

###### Console appender definition #######

# All outputs currently set to be a ConsoleAppender.
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d{
    
    ABSOLUTE} %-5p [%c{
    
    3}] %m%n
#log4j.appender.Console.layout.ConversionPattern=%d{
    
    ABSOLUTE} %-5p [%c] %m%n

###### File appender definition #######
log4j.appender.File=org.apache.log4j.DailyRollingFileAppender
log4j.appender.File.File=spring.log
log4j.appender.File.Append=false
log4j.appender.File.layout=org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern=%d{
    
    ABSOLUTE} %-5p [%c] %m%n




log4j.rootLogger=debug, stdout, R

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%5p - %m%n

log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=firestorm.log

log4j.appender.R.MaxFileSize=100KB
log4j.appender.R.MaxBackupIndex=1

log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n

log4j.logger.com.codefutures=DEBUG

IDEA中Hibernate实现增删改查功能

UserTest.java

package com.mengma.test;

import org.hibernate.*;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.Restrictions;
import org.junit.Test;

import com.mengma.domain.User;

import java.util.List;

public class UserTest {
    
    
    // 添加操作
    @Test
    public void testInsert() {
    
    
        // 1.创建Configuration对象并加载hibernate.cfg.xml配置文件
        Configuration config = new Configuration().configure();
        // 2.获取SessionFactory
        SessionFactory sessionFactory = config.buildSessionFactory();
        // 3.得到一个Session
        Session session = sessionFactory.openSession();
        // 4.开启事务
        Transaction transaction = session.beginTransaction();
        // 5.执行持久化操作
        //通过实例化的对象向数据库添加新记录
        User user = new User();
        user.setName("zhangsan");
        user.setAge(21);
        user.setGender("男");
        // 将对象保存到表中
        //增save()方法,更新update()方法,更新时以主键映射的属性为条件
        //删除User user = (User) session.get(User.class, 1);session.delete(user);
        session.save(user);
        // 6.提交事务
        transaction.commit();
        // 7.关闭资源
        session.close();
        sessionFactory.close();
    }
    
    // 查询操作
    @Test
    public void findByIdTest() {
    
    
        // 1.创建Configuration对象并加载hibernate.cfg.xml配置文件
        Configuration config = new Configuration().configure();
        // 2.获取SessionFactory
        SessionFactory sessionFactory = config.buildSessionFactory();
        // 3.得到一个Session
        Session session = sessionFactory.openSession();
        // 4.开启事务
        Transaction transaction = session.beginTransaction();
        // 5.执行持久化操作

        // session.get()只能通过主键来查询的//
//        User user = (User) session.get(User.class, 4);
//        System.out.println(user.getId() + "" + user.getName() + ""
//                + user.getAge() + "" + user.getGender());


//        根据其他属性查询(可用于实例化多个对象)
//        Criteria criteria = session.createCriteria(User.class);
//        criteria.add(Restrictions.eq("name", "zhangsan"));
//        @SuppressWarnings("unchecked")
//        List<User> list = criteria.list();
//        for(User b:list){
    
    
//            System.out.println(b); // 调用User类中的toString()方法
//        }

        // 查询类对应表的所有记录(可用于实例化多个对象)
        String hql="from User";
        Query query = session.createQuery(hql);
        @SuppressWarnings("unchecked")
        List<User> list2 = query.list();
        for(User b:list2){
    
    
            System.out.println(b); // 调用User类中的toString()方法
        }



        // 6.提交事务
        transaction.commit();
        // 7.关闭资源
        session.close();
        sessionFactory.close();
    }

    // 修改操作
    @Test
    public void testUpdate() {
    
    
        // 1.创建Configuration对象并加载hibernate.cfg.xml配置文件
        Configuration config = new Configuration().configure();
        // 2.获取SessionFactory
        SessionFactory sessionFactory = config.buildSessionFactory();
        // 3.得到一个Session
        Session session = sessionFactory.openSession();
        // 4.开启事务
        Transaction transaction = session.beginTransaction();
        // 5.执行持久化操作
        User user = new User();
        user.setId(1);
        user.setName("zhangsan");
        user.setAge(19);
        user.setGender("男");
        // 更新数据
        session.update(user);
        // 6.提交事务
        transaction.commit();
        // 7.关闭资源
        session.close();
        sessionFactory.close();
    }

//    删除
    @Test
    public void deletByIdTest(){
    
    
        // 1.创建Configuration对象并加载hibernate.cfg.xml配置文件
        Configuration config = new Configuration().configure();
        // 2.获取SessionFactory
        SessionFactory sessionFactory = config.buildSessionFactory();
        // 3.得到一个Session
        Session session = sessionFactory.openSession();
        // 4.开启事务
        Transaction transaction = session.beginTransaction();
        // 5.执行持久化操作
        User user = (User) session.get(User.class, 1);
        session.delete(user);
        // 6.提交事务
        transaction.commit();
        // 7.关闭资源
        session.close();
        sessionFactory.close();
    }

}

可以根据其他属性查询(可用于实例化多个对象)

jar包

在这里插入图片描述
在这里插入图片描述

Guess you like

Origin blog.csdn.net/qq_42583263/article/details/115487136