是通过映射文件来映射的。举个简单的例子,例如我有个Teacher实体类(某教学管理系统老师用户):
private Integer id; //编号
private String name; //姓名
private String password; //密码
private Date createDate; //创建日期
同时,我创建了数据表TEACHER:
create table teacher( id number(9) primary key, --编号 name varchar2(20), --姓名 password varchar2(20), --密码 create_date date --创建日期 );
这时,怎么关联它们呢?通过加载hibernate框架,我们就可以使用映射文件来关联实体类和数据库了
文件名:Teacher.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">
<!-- Mapping file autogenerated by MyEclipse Persistence Tools-->
<hibernate-mapping>
<class name="com.yss.Teacher" table="TEACHER" schema="WZM">
<id name="id" type="java.lang.Integer">
<column name="ID" precision="9" />
</id>
<property name="name" type="java.lang.String">
<column name="NAME" length="20" />
</property>
<property name="password" type="java.lang.String">
<column name="PASSWORD" length="20" />
</property>
<property name="createDate" type="java.util.Date">
<column name="CREATE_DATE" length="7" />
</property>
</class>
</hibernate-mapping>
当然,这只是比较简单的映射,还有什么多对多,一对多等映射,并且映射时如何设置以达到需要的效果,这些你可以在网上搜索相关资料自行查看。
B. 各位大神,请问SQL用户映射是什么
指定某个用户对选定的数据库分配权限
用户映射
public 维护所有默认权限
db_owner 执行所有数据库角色活动
db_accessadmin 添加和删除数据库用户, 组及角色
db_ddladmin 添加、更改或删除数据库对象
db_security admin 分配语句执行和对象权限
db_backupoperator 备份数据库
db_datareader 读取任何表中的数据
db_datawriter 添加、更改或删除所有表中的数据
db_denydatareader 不能读取任何表中的数据
db_denydatawriter 不能更改任何表中的数据
C. 如何编写Java的MyBatis框架中SQL语句映射部分
1..增删改查、参数、缓存
1.1 select 举例如下:
查询学员信息,一个String参数,参数标识为#{studentID},并返回一个StudentEntity类型的对象
<select id="getStudent" parameterType="String" resultMap="studentResultMap">
SELECT ST.STUDENT_ID,
ST.STUDENT_NAME,
ST.STUDENT_SEX,
ST.STUDENT_BIRTHDAY,
ST.CLASS_ID
FROM STUDENT_TBL ST
WHERE ST.STUDENT_ID = #{studentID}
</select>
1.2 insert 举例如下:
插入数据,一个String参数,参数标识为#{studentID},并返回一个StudentEntity类型的对象。
<insert id="insertStudent" parameterType="StudentEntity">
INSERT INTO STUDENT_TBL (STUDENT_ID,
STUDENT_NAME,
STUDENT_SEX,
STUDENT_BIRTHDAY,
CLASS_ID)
VALUES (#{studentID},
#{studentName},
#{studentSex},
#{studentBirthday},
#{classEntity.classID})
</insert>
1.3 update 举例如下:
更新学员信息
<update id="updateStudent" parameterType="StudentEntity">
UPDATE STUDENT_TBL
SET STUDENT_TBL.STUDENT_NAME = #{studentName},
STUDENT_TBL.STUDENT_SEX = #{studentSex},
STUDENT_TBL.STUDENT_BIRTHDAY = #{studentBirthday},
STUDENT_TBL.CLASS_ID = #{classEntity.classID}
WHERE STUDENT_TBL.STUDENT_ID = #{studentID};
</update>
1.4 delete 举例如下:
删除学员信息:
<delete id="deleteStudent" parameterType="StudentEntity">
DELETE FROM STUDENT_TBL WHERE STUDENT_ID = #{studentID}
</delete>
2.ResultMap
SQL映射xml文件是为了放置所有sql语句,需要定义一个workspace,正常是接口类的路径。SQL语句映射文件写好后,需要在MyBatis配置文件mappers标签中引用。
举例如下:
<mappers>
<mapper resource="cn/te/ninixie/manager/data/mappers/UserMapper.xml" />
<mapper resource="cn/te/ninixie/manager/data/mappers/StudentMapper.xml" />
<mapper resource="cn/te/ninixie/manager/data/mappers/ClassMapper.xml" />
<mapper resource="cn/te/ninixie/manager/data/mappers/TeacherMapper.xml" />
</mappers>
当Java接口与xml文件在一个相对路径下,那么MyBaits配置文件的napper中可以不用声明。
ResultMaps的作用,就是简单的语句而不需要多余的结果映射,更多复杂的语句,除了只要一些绝对必须的语句描述关系以外,就不需要其它的了。
resultMap属性:type为java实体类;id为此resultMap的标识。
resultMap可以设置的映射:
2.1 constructor:用来将结果发射给一个实例化好的类的构造器
idArg_ID 参数:将结果集标记为ID,为了方便全局调用
arg –反射到构造器的通常结果
2.2 id结果,将结果集标记为ID,为了方便全局调用
2.3 result:反射到JavaBean的普通结果
2.4 association:复杂类型的结合,多个结果合成的类型
2.5 collection:复杂类型结合
2.6 resultMap的集合,也可以引用到其他
2.7 discriminator:使用一个结果值为了决定使用哪个结果集。
D. 如何当远程的sql数据库映射到本地
定时将SQLITE的数据导出为TXT文件,然后再导入SQL SERVER。 并无其它 什么好方法。 安装SQLITE驱动,将DB COPY到SQLSERVER机器上,用DTS OR JETSQL来导入
E. MyBatis sql映射文件疑问
其实没有什么区别,只不过是取值的方式不一样罢了,
<resultMap id="wpResult" class="wp">
</resultMap>
配了一次就可以反复用,
Alias 需要在查询语句里一个一个的as,你不觉得麻烦也可以用。
Alias最大的作用是联表查询的时候返回多个相同ID的时候可以改下名。不致于冲突报错
F. 关于Mybatis SQL映射文件的问题
使用转义符 < < ; >
G. ISA服务器跟SQL服务器的映射问题映射问题
在ISA server上作服务器发布就可以
H. 学习SQL前需要学习什么
呵呵,出入江湖的小伙子。
sql就是一种语言,与C和C++等一样。但是它是针对数据库的一种结构化查询语言。
学习这个语言之前最好能对c或其他任何一种语言有所了解,但是sql语言和其他语言不一样,包括写法、语言的运行等等。
和离散数学里面里面的映射等连写是非常密切的,只要努力,就能学好。重在理解。