项目实训笔记

解压版MySQL安装5.7.13

1.配置环境变量
我的电脑->属性->高级->环境变量->path
如:C:\Program Files\MySQL\MySQL Server 5.6\bin
2.修改my-default.ini或者自己新建my.ini
在其中修改或添加配置:
[mysqld]
basedir=C:\Program Files\MySQL\MySQL Server 5.6
datadir=C:\Program Files\MySQL\MySQL Server 5.6\data
3.以管理员身份运行cmd一定要用管理员身份运行,不然权限不够
进入mysql的bin文件夹不管有没有配置过环境变量,也要进入bin文件夹,否则之后启动服务仍然会报错误2
输入mysqld -install(如果不用管理员身份运行,将会因为权限不够而出现错误:Install/Remove of the Service Denied!)
安装成功
4.运行mysqld –initialize(注意这里是两个减号,如出现服务无法启动,无系统错误则执行。若没有init则不存在data目录,自然无法启动成功)
5.安装成功后就要启动服务了,继续在cmd中输入:net start mysql,服务启动成功!
6、使用mysql -u root -p回车,输入密码。(当执行完第四步之后,在data目录下有一个.err结尾的文件内有这样一句话:A temporary password is generated for root@localhost: hAXP8)oNj,G.其中加粗部分为临时密码,没有这个密码无法登陆)。
7、登陆之后如果想进行其它操作,需要先修改密码。set password = password(‘1234’);1234为新的密码。

配置hibernate

1、创建数据库表。如:Test(id varchar(2),name varchar(10))。这里的表的两列都是普通属性,都不是主键。因此在hibernate的映射文件中就需要使用复合主键的方式。当然也可以建立一个主键,这不在本次配置讨论之列。
2、使用eclipse建立个工程,两个包com、exec。在com包内新建两个Java文件,分别取名User, UserID。

public class User {
    private UserID id;
    public void setId(UserID id) {
        this.id = id;
    }
    public UserID getId() {
        return this.id;
    }
}
public class UserID implements Serializable {
    private String id;
    private String name;
    此处为两个成员变量的get\set方法
    public boolean equals(Object o) {
        if(o == null)
            return false;
        if(!(o instanceof UserID))
            return false;
        UserID u = (UserID)o;
        if((id.equals(u.getId()))&&(name.equals(u.getName())))
            return true;
        return false;
    }
    public int hashCode() {
        return name.hashCode();
    }
}

hibernate使用主键标识对象的唯一性。如果数据库中没有自行设置主键,那么使用复合主键。此时需要为复合主键单独设置一个类,即UserID,其中id+name作为主键。因此组合之后的UserID作为主键使用,作为User的属性,User与数据库表相互映射。如果数据库表中不只两列,比如还有sex列,但不作为复合主键。那么sex不需要出现在UserID内,只需要写在User内即可。但UserID类必须有而且作为User一个属性。
另外,UserID需要实现Serializable接口(目前我也不明白为什么)。而且需要重写equals、hashCode方法。当然此处给出的重写方法不一定准确。重写这两个方法可以在操作数据时提高正确性和效率。
3、写映射文件UserID.hbm.xml。

<hibernate-mapping>
    <class name="com.User" table="Test">
        <composite-id name="id" class="com.UserID">
            <key-property name="id">
                <column name="id" />
            </key-property>
            <key-property name="name">
                <column name="name" />
            </key-property>
        </composite-id>
    </class>
</hibernate-mapping>

这个文件与User.class放在同一个目录下。class的属性name指明映射对象,记得加上包名。table指向数据库中的表。composite-id的name指向User中的id属性,class指向复合主键的类UserID,记得包名。key-property的name指向UserID中的id属性,column的name指向数据库中的id列。从这里可以看出,数据库中的名字和Java类中的名字未必对应,只要在映射关系里指明即可。
4、编写配置文件hibernate.cfg.xml,放在存放编译文件的目录,即与User.class的包com同一目录。

<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/ShuziYingxin</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">1234</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <mapping resource="com/User.hbm.xml" />
    </session-factory>  
</hibernate-configuration>

property属性一般为固定写法,除非把MySQL数据库换成其他数据库,或者改变密码用户名端口数据库。mapping的resource属性执行映射文件,使用相对路径。(xml文件没有遵守相关书写贵方,引以为戒)
6、导入jar包。将hibernate压缩包lib\required目录下所有jar包和MySQL驱动jar包添加到build path。可以将所有jar包放入一个文件夹中,复制到工程目录下,然后全选所有jar包右键add to build path即可。前提使用eclipse。
5、在exec包下新建文件Client.java。

//读取hibernate.cfg.xml文件  
        Configuration cfg = new Configuration().configure();
        //建立SessionFactory  
        SessionFactory factory = cfg.buildSessionFactory();
        //取得session  
        Session session = null;  
        try {  
            session = factory.openSession();
            //开启事务  
            session.beginTransaction();
            //查询数据
            Query<UserBean> query = session.createQuery("from UserBean");
            List<UserBean> list = query.list();
            for (int i=0;i<list.size(); i++) {
                UserBean user = list.get(i);
                UserID uid = user.getId();
                System.out.println(uid.getId() +" " + uid.getName());
            } 
            //提交事务  
            session.getTransaction().commit();
        } catch(Exception e) {  
            e.printStackTrace();  
            //回滚事务  
            session.getTransaction().rollback();  
        }finally {  
            if (session != null) {  
                if (session.isOpen()) {  
                    //关闭session  
                    session.close();  
                }  
            }  
        } 
    }
}

Query query = session.createQuery(“from User”);这句话尤为重要,尤其是括号内的值,User为与数据库表Test对应的映射对象,千万别写Test。然后运行即可实现取出所有Test的记录。

非web程序配置spring

1、使用eclipse新建工程,两个包com、exec。在com下新建两个Java文件Person.java和Gun.java。

public class Person {
    public Person() {}
    public void setGunn(Gun gun) {
        this.gun = gun;
    }
    public void useGun() {
        System.out.println(gun.fire());
    }
    private Gun gun;
}
public class Gun {
    public String fire() {
        return "开火";
    }
}

Person类内可以没有参数为空的构造器,但是如果有参数不为空的构造器,则必须有参数为空的构造器。而且使用spring管理对象,Person的属性必须有set方法。
2、写配置文件test.xml,放在bin目录下。

<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">

    <bean id="person" class="com.Person">
        <property name="gunn" ref="gun" />
    </bean>
    <bean id="gun" class="com.Gun" />
</beans>

不可以省略beans内的属性。其中bean的id为对象的唯一标识,class为对应的类。因为Person有一个Gun属性,因此ref的值必须与Gun对应的id一致。property的name对应Person中对应属性的set方法的名字。
3、在exec下新建Client.java文件。

public class Client {

    public static void main(String[] args) {
        // 创建spring容器,参数为配置文件名
        ApplicationContext ctx = new ClassPathXmlApplicationContext("test.xml");
        // 根据id获得对象
        Person p = ctx.getBean("person",Person.class);
        p.useGun();
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值