客户端开发框架
1.Hibernate
-
安装hibernate tools
官网下载离线包或者在线安装hibernate插件(JBoss Tools)。
-
导入hibernate驱动包
a. 导入官网下载的hibernate驱动包;
b. 导入uxdb的hibernate驱动包uxdb的hibernate驱动包(UXSQLDialect-4.2.jar)在uxdb的安装目录中获取。

-
创建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。

根据下图填写相关配置,勾选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
b. 单击Classpath标签页,选择uxdb的JDBC驱动包,然后Finish。

-
连接数据库并生成源代码
a. 打开Hibernate Configurations的View窗口,如下图显示即数据库连接成功。
Window=>Show View=>other..=>Hibernate=>Hibernat Configurations,单击open。

b. 反向生成java代码
-
新建Hibernate Code generation 的configure

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

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

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

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

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

-
创建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(); } } } } } -
运行结果
运行结果如下显示时hibernate连接使用uxdb成功,显示student表的数据与uxdb数据库中查看结果一致。

-
使用分析说明
创建配置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。
注意
- 导入uxdb的jdbc包。
- 使用hibernate框架时在导入uxdb的jdbc包之后需导入hibernate的包和uxdb的Dialect包,并在使用时填写正确。
2.Spring
-
安装SpringIDE
下载离线包或者在线安装SpringIDE插件。
-
导入spring所有驱动包
导入官网下载的spring驱动包。

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

-
创建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)。

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()); } } } -
运行结果
运行结果如下显示时spring连接使用uxdb成功,显示student表的数据与uxdb数据库中查看结果一致。

-
使用分析说明
配置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
-
安装MyBatis
下载离线包或者在线安装插件。
-
导入mybatis的驱动包
导入官网下载的mybatis驱动包。

-
创建接口类、配置和测试类等
右键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)。

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()); } } } } -
运行结果

-
使用分析说明
配置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="******"。