客户端开发框架

1.Hibernate

  1. 安装hibernate tools

    官网下载离线包或者在线安装hibernate插件(JBoss Tools)。

  2. 导入hibernate驱动包

    a. 导入官网下载的hibernate驱动包;

    b. 导入uxdb的hibernate驱动包uxdb的hibernate驱动包(UXSQLDialect-4.2.jar)在uxdb的安装目录中获取。img

  3. 创建hibernate.cfg.xml

    uxdb server端IP为192.168.1.82,端口为5432,数据库为test,用户名为uxdb,密码为123456。

    a. 创建hibernate.cfg.xml;

    右键src,New=>Other...=>Hibernate=>Hibernate Configuration File(cfg.xml),单击Next。img

    根据下图填写相关配置,勾选Create a console configuration,单击Next:

    Session factory name:uxdb
    Database dialect:org.hibernate.dialect.UXSQLDialect
    Driver class:com.uxsino.uxdb.Driver
    Connection URL:jdbc:uxdb://192.168.1.82:5432/test
    Username:uxdb
    Password:123456
    

    img

    b. 单击Classpath标签页,选择uxdb的JDBC驱动包,然后Finish。

    img

  4. 连接数据库并生成源代码

    a. 打开Hibernate Configurations的View窗口,如下图显示即数据库连接成功。

    Window=>Show View=>other..=>Hibernate=>Hibernat Configurations,单击open。

    img

    b. 反向生成java代码

    • 新建Hibernate Code generation 的configure img

      双击Hibernate Code Generation打开配置文件,名称默认是New_configuration;Output directory选择\uxdb-jdbc\src;勾选Reverse engineer from JDBC Connection;Package填写com.uxdb.hibernate

    img

    • reveng.xml单击setup...=>Create new...,选择路径uxdb-jdbc,单击Next,进入Configure Table filters页面,单击Refresh,点开public,选择student,单击Include...

    • 单击Finish。

    img

    • 选择Exporters选项卡,并进行如下的配置,勾选Domain code和Hibernate XML Mappings,单击Run完成。

    img

    • 工程中生成了com.uxdb.hibernate包及访问数据库的源代码,如下所示。

    img

  5. 修改hibernate.cfg.xml

    右键hibernate.cfg.xml,Open With=>Test Editor,增加如下内容:

    img

  6. 创建hibernate的测试类

    右键包com.uxdb.hibernate,New=>class,Name输入HibernateTest,单击Finish。

    HibernateTest.java代码如下:

    package com.uxdb.hibernate;
    import java.util.List;
    import org.hibernate.Query;
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.cfg.Configuration;
    public class HibernateTest {      
        @SuppressWarnings({ "unchecked", "deprecation" })
        public static void main(String[] args) {          
            //读取hibernate.cfg.xml文件  
            Configuration cfg = new Configuration().configure();           
            //建立SessionFactory  
            ServiceRegistry sr = new ServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry();
            SessionFactory factory = cfg.buildSessionFactory(sr);
            Session session = null;
            try {
                //取得session  
                session = factory.openSession();  
                //开启事务  
                session.beginTransaction();   
                Student student = new Student();
                student.setSno(2001);
                student.setSname("testname");
                student.setSage(55);
                student.setSsex("男");          
                //保存student对象  
                session.save(student);            
                List<Student> list;
                String sql = "from Student";  
                Query query = session.createQuery(sql);  
                list = (List<Student>)query.list();             
                System.out.println("studentnew");
                for (Student u : list) {
                    System.out.println(u.getSno() + ";" + u.getSname() + ";" + u.getSage() + ";" + u.getSsex());
                }            
                //提交事务  
                session.getTransaction().commit();  
            }catch(Exception e) {  
                e.printStackTrace();  
                //回滚事务  
                session.getTransaction().rollback();  
            }finally {  
                if (session != null) {  
                    if (session.isOpen()) {  
                        //关闭session  
                        session.close();  
                    }  
                }  
            }     
        }  
    }
    
  7. 运行结果

    运行结果如下显示时hibernate连接使用uxdb成功,显示student表的数据与uxdb数据库中查看结果一致。 img img

  8. 使用分析说明

    创建配置hibernate.cfg.xml时注意以下几项内容:

    a. Database dialect:org.hibernate.dialect.UXSQLDialect(使用uxdb的dialect)。

    b. Driver class:com.uxsino.uxdb.Driver(使用uxdb的driver.class)。

    c. Connection url:jdbc:uxdb://192.168.1.82:5432/test(jdbc:uxdb://IP:port/databasename)。

    d. Username:uxdb。

    e. Password:123456。

    注意

    1. 导入uxdb的jdbc包。
    2. 使用hibernate框架时在导入uxdb的jdbc包之后需导入hibernate的包和uxdb的Dialect包,并在使用时填写正确。

2.Spring

  1. 安装SpringIDE

    下载离线包或者在线安装SpringIDE插件。

  2. 导入spring所有驱动包

    导入官网下载的spring驱动包。 img

  3. 导入commons驱动包

    导入官网下载的commons驱动包。

    img

  4. 创建Bean类、接口类、接口实现类、beans.xml配置和测试类

    右键uxdb-jdbc,New=>Source Folder,Folder name输入spring。

    创建包(右键spring,New=>Package)

    com.uxdb.bean,com.uxdb.service,com.uxdb.service.impl,com.uxdb.springtest。

    包下面创建对应的类(右键包名,New=>Class) StudentBean,StudentService,StudentServiceImpl,SpringJdbcTest。

    创建Spring Bean配置文件(右键spring,New=>Other...=>Spring=>Spring Bean Configuration File,单击Next,File name中输入Application-context,单击Finish)。

    img

    a. StudentBean.java;

    package com.uxdb.bean;
    public class StudentBean {
    	private int sno;	
    	private String sname;	
    	private int sage;	
    	private String ssex;	
    	public int getSno() {
    		return sno;
    	}
    	public void setSno(int sno) {
    		this.sno = sno;
    	}
    	public String getSname() {
    		return sname;
    	}
    	public void setSname(String sname) {
    		this.sname = sname;
    	}
    	public int getSage() {
    		return sage;
    	}
    	public void setSage(int sage) {
    		this.sage = sage;
    	}
    	public String getSsex() {
    	   	return ssex;
    	}
    	public void setSsex(String ssex) {
    		this.ssex = ssex;
    	}
    }
    

    b. StudentService.java;

    package com.uxdb.service;
    import java.util.List;
    import com.uxdb.bean.StudentBean;  
    public interface StudentService {  
        //保存  
        public void save(StudentBean student);  
        //更新  
        public void update(StudentBean student);  
        //获取  
        public StudentBean getStudent(int sno);  
        public List<StudentBean> getStudentBean();  
        //删除记录  
        public void delete(int sno);
    } 
    

    c.StudentServiceImpl.java;

    package com.uxdb.service.impl;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.List;
    import javax.sql.DataSource;
    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.jdbc.core.RowMapper;
    import com.uxdb.bean.StudentBean;
    import com.uxdb.service.StudentService;
    public class StudentServiceImpl implements StudentService {
    	private JdbcTemplate jdbcTemplate;
    	public void setDataSource(DataSource dataSource) {
    		this.jdbcTemplate = new JdbcTemplate(dataSource);
    	}
    	@Override
    	public void save(StudentBean student) {
    		// TODO Auto-generated method stub
    	   	jdbcTemplate.update("insert into student(sno,sname,sage,ssex) values(?,?,?,?)",
    		   		new Object[] { student.getSno(), student.getSname(), student.getSage(), student.getSsex() },
    			   	new int[] { java.sql.Types.INTEGER,java.sql.Types.VARCHAR,
    				   			java.sql.Types.INTEGER,java.sql.Types.VARCHAR });
    	   }
    	   @Override
    	   public void update(StudentBean student) {
    		   // TODO Auto-generated method stub
    		   jdbcTemplate.update("update student set sname=?,ssex=? where sno=?", 
    			   	new Object[] { student.getSname(), student.getSsex(), student.getSno() },
    				new int[] { java.sql.Types.VARCHAR,java.sql.Types.VARCHAR,java.sql.Types.INTEGER });
    	   }
    	   @SuppressWarnings("unchecked")
    	   @Override
    	   public StudentBean getStudent(int sno) {
    		   // TODO Auto-generated method stub
    		   return (StudentBean) jdbcTemplate.queryForObject("select * from student where sno=?", 
    			   	new Object[] { sno },
    				   new int[]{java.sql.Types.INTEGER},new StudentRowMapper() );
    	   }
    	   @SuppressWarnings("unchecked")
    	   @Override
    	   public List<StudentBean> getStudentBean() {
    		   // TODO Auto-generated method stub
    		   return (List<StudentBean>)jdbcTemplate.query("select * from student", new StudentRowMapper() ); 
    	   }	
    	   @SuppressWarnings("rawtypes")
    	   public class StudentRowMapper implements RowMapper {    
    	       @Override  
    	       public Object mapRow(ResultSet rs, int n) throws SQLException {  
    	           // TODO Auto-generated method stub  
    	    	   StudentBean student=new StudentBean();
    			     student.setSno(rs.getInt("sno"));
    	   		    student.setSname(rs.getString("sname"));
    	   		    student.setSage(rs.getInt("sage"));
    	   		    student.setSsex(rs.getString("ssex"));
    	   		    return student;  
    	       }  	  
    	   } 	
    	   @Override
    	   public void delete(int sno) {
    		   // TODO Auto-generated method stub
    	   	jdbcTemplate.update("delete from student where sno=?", new Object[] { sno },
    		   		new int[] { java.sql.Types.INTEGER });
    	   }
    }
    

    d. Application-context.xml;

    <?xml version="1.0" encoding="UTF-8"?>
    <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.xsd"> 
        <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
              <property name="driverClassName" value="com.uxsino.uxdb.Driver"/>  
              <property name="url" value="jdbc:uxdb://192.168.1.82:5432/test"/>  
              <property name="username" value="uxdb"/>  
              <property  name="password" value="123456"/>  
        </bean>  
        <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
              <property name="dataSource" ref="dataSource"/>  
        </bean>  
        <bean id="studentService" class="com.uxdb.service.impl.StudentServiceImpl">  
              <property name="dataSource" ref="dataSource"></property>  
        </bean>  
    </beans>
    

    e. SpringJdbcTest.java;

    package com.uxdb.springtest;
    import java.util.List;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    import com.uxdb.bean.StudentBean;
    import com.uxdb.service.StudentService;
    public class SpringJdbcTest {
    	private static  StudentService studentService;
    	private static ApplicationContext act; 
    	public static void main(String[] args) {
    		act = new ClassPathXmlApplicationContext("Application-context.xml");  
    		studentService=(StudentService) act.getBean("studentService");  
    		List<StudentBean> list;
    		StudentBean student = new StudentBean();		
    		student.setSno(8008);
    		student.setSname("springname");
    		student.setSage(66);
    		student.setSsex("女");
    		studentService.save(student);		
    		list = studentService.getStudentBean();
    		System.out.println("newstudent");
    		for (StudentBean u : list) {
    			System.out.println(u.getSno() + ";" + u.getSname() + ";" + u.getSage() + ";" + u.getSsex());
    		}		
    		student.setSno(1005);
    		student.setSname("tnm");
    		student.setSsex("男");
    		studentService.update(student);		
    		student = studentService.getStudent(1005);
    		System.out.println("");
    		System.out.println("updatestudent");
    		System.out.println(student.getSno() + ";" + student.getSname() + ";" + student.getSage() + ";" + student.getSsex());		
    		//studentService.delete(8008);		
    		list = studentService.getStudentBean();
    		System.out.println("");
    		System.out.println("student");
    		for (StudentBean u : list) {
    			System.out.println(u.getSno() + ";" + u.getSname() + ";" + u.getSage() + ";" + u.getSsex());
    		}
    	}
    }
    
  5. 运行结果

    运行结果如下显示时spring连接使用uxdb成功,显示student表的数据与uxdb数据库中查看结果一致。 img img

  6. 使用分析说明

    配置Application-context.xml文件注意以下几点:

    a. driverClassName="com.uxsino.uxdb.Driver" (使用uxdb的driver class)。

    b. url="jdbc:uxdb://192.168.1.223:5432/test"(jdbc:uxdb://IP:port/databasename)。

    c. username="uxdb"。

    d. password="******"。

3.MyBatis

  1. 安装MyBatis

    下载离线包或者在线安装插件。

  2. 导入mybatis的驱动包

    导入官网下载的mybatis驱动包。

    img

  3. 创建接口类、配置和测试类等

    右键uxdb-jdbc,New=>Source Folder,Folder name输入mybatis。

    创建包(右键mybatis,New=>Package)config,main,mapper,model。

    包下面创建对应的类(右键包名,New=>Class)MybatisConfiguration,Main,StudentsMapper,Student。

    创建Mybatis配置文件(右键mybatis,New=>Other...=>MyBatis=>MyBatis Generator Configuration File,单击Next,File name中输入mybatis-config.xml和student.xml,单击Finish)。

    img

    a. Student.java代码如下:

    package model;
    public class Student {
        private int sno;    
        private String sname;   
        private int sage;   
        private String ssex;    
        public int getSno() {
            return sno;
        }
        public void setSno(int sno) {
            this.sno = sno;
        }
        public String getSname() {
            return sname;
        }
        public void setSname(String sname) {
            this.sname = sname;
        }
        public int getSage() {
            return sage;
        }
        public void setSage(int sage) {
            this.sage = sage;
        }
        public String getSsex() {
            return ssex;
        }
        public void setSsex(String ssex) {
            this.ssex = ssex;
        }
    }
    

    b. StudentsMapper代码如下:

    package mapper;
    import model.Student;
    import java.util.List;
    // Maps queries in student.xml
    public interface StudentsMapper {
        public List<Student> getStudents();
    }
    

    c. MybatisConfiguration.java代码如下:

    package config;
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    import java.io.IOException;
    import java.io.Reader;
    public class MybatisConfiguration {
        private static final String MYBATIS_CONFIG_FILE = "mybatis-config.xml";
        private final SqlSessionFactory sqlSessionFactory;
        public MybatisConfiguration() throws IOException {
            try(Reader reader = Resources.getResourceAsReader(MYBATIS_CONFIG_FILE)) {
                    sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
            }
        }
        public SqlSessionFactory getSessionFactory() {
            return sqlSessionFactory;
        }
    }
    

    d. mybatis-config.xml如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC"/>
                <dataSource type="POOLED">
                    <property name="poolMaximumActiveConnections"     value="50"/>
                    <property name="poolMaximumIdleConnections"       value="10"/>
                    <property name="poolMaximumCheckoutTime"          value="20000"/>  <!-- milliseconds -->
                    <property name="driver" value="com.uxsino.uxdb.Driver"/>
                    <property name="url" value="jdbc:uxdb://192.168.1.82:5432/test"/>
                    <property name="username" value="uxdb"/>
                    <property name="password" value="123456"/>
                </dataSource>
            </environment>
        </environments>
        <mappers>
            <mapper resource="student.xml"/>
        </mappers>
    </configuration>
    

    e. student.xml如下:

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="mapper.StudentsMapper">
        <select id="getStudents" parameterType="int" resultType="model.Student">
            INSERT INTO student VALUES(9999,'mybatis',99,'boy');
            SELECT * FROM student
        </select>
    </mapper>
    

    f. 测试代码Main.java如下:

    package main;
    import config.MybatisConfiguration;
    import mapper.StudentsMapper;
    import model.Student;
    import org.apache.ibatis.session.SqlSession;
    import java.io.IOException;
    import java.util.List;
    public class Main {
        public static void main(String[] args) throws IOException {
            // Parse the configuration file mybatis-config.xml
            MybatisConfiguration config = new MybatisConfiguration();
            List<Student> students;
            // Get a session. Get the mapper (defined in countries-languages.xml) and query using business-logic style. Close session
            SqlSession sqlSession = config.getSessionFactory().openSession();
            try {
                StudentsMapper mapper = sqlSession.getMapper(StudentsMapper.class);
                students = mapper.getStudents();
            } finally {
                if(null != sqlSession) {
                    sqlSession.close();
                }
            }
            if(students != null) {
                // Print query results
                System.out.println("Sno,Sname,Sage,Ssex");
                for(Student cl : students) {
                    System.out.println(cl.getSno() + "," + cl.getSname() + "," + cl.getSage()+ "," + cl.getSsex());
                }
            }
    }
    }
    
  4. 运行结果

    img img

  5. 使用分析说明

    配置mybatis-config.xml文件注意以下几点:

    a. driverClassName="com.uxsino.uxdb.Driver" (使用uxdb的driver.class)。

    b. url="jdbc:uxdb://192.168.1.82:5432/test"(jdbc:uxdb://IP:port/databasename)。

    c. username="uxdb"。

    d. password="******"。