使用MyBatis进行数据库映射的方式
在Java中,MyBatis是1个支持自定义SQL的持久层框架,它可以存储过程和高级的映射。
在正式介绍之前,我们首先通过mvn进行安装,我们将下面的内容添加到pom.xml配置文件中:
org.mybatis mybatis 3.4.5
上述操作完成后,我们首先新建1个MyBatis的配置文件,使用XML的格式进行编写:
我们将上述的内容写入到config.xml文件中。其中environments是配置的环境,其中的environment用于对应的环境的配置。这里,我们默认使用的环境是my-config,其使用JDBC的方式进行连接,数据源的方式为连接池。其中,数据源可以使用:
- UNPOOLED,每次请求时打开和关闭连接
- POOLED,连接池
- JNDI,主要用于EJB或应用服务器中使用
而环境通过对db.properties中的内容进行配置,其内容如下:
url=jdbc:oracle:thin:@xxx.xxx.xxx.xx:1521/orcl user=xxx pwd=xxx driver=oracle.jdbc.driver.OracleDriver
更多关于MyBatis的配置,可以参考。其中包括别名、类型处理器typeHandler的说明,这里就不一一叙述了。
最后,我们还设置了1个匹配的资源,其支持4种方式:
resource,使用相对于类路径的资源引用
url,使用完全限定资源定位符
class,使用映射器接口实现类的完全限定类名
name,将包内的映射器接口实现全部注册为映射器
在这里我们使用resource的方式指定匹配的文件的名称。其内容如下:
selectENTNAME,UNISCID,INDUSTRY,REGION,OPSTATE,ESTYEAR,SCALEfromxxxwhererownum20
由于在XML中,括号具有单独的意义,因此如果我们使用尖括号会出现解析错误,此时我们可以使用HTML实体转义编码,如<来进行处理,或者直接使用进行实际符号的处理。
我们通过mapper标签中的namespace定义了映射的命名空间,其中的id用于对应语句的匹配,方便进行命名解析。
接着是对应的Java代码的编写:
importjava.io.Reader; importjava.util.*; importcom.alibaba.fastjson.*; importorg.apache.ibatis.io.Resources; importorg.apache.ibatis.session.*; publicclassDemo{ publicstaticSqlSessionFactorysessionFactory; publicstaticvoidmain(String[]args){ try{ Readerreader=Resources.getResourceAsReader("config.xml"); sessionFactory=newSqlSessionFactoryBuilder().build(reader); SqlSessionsession=sessionFactory.openSession(); List>result=session.selectList("user.es_temp"); Stringjson_str=JSON.toJSONString(result); System.out.println(json_str); session.close(); }catch(Exceptione){ e.printStackTrace(); } } }
在这里,我们通过Resources类对配置文件进行读取,然后构建1个SqlSessionFactory,之后通过其openSession得到1个Session对象,这样我们就可以进行对应的SQL操作了。
我们使用selectList函数进行对应SQL的执行,其使用的是命名空间.id的方式来进行对应的操作。另外,还有1个selectOne函数用于单个记录的查询,对于多个结果会直接返回异常。
其结果为:
[ { "ENTNAME":"深圳市蓝海汇装饰设计工程有限公司", "UNISCID":"91440300359236108Q", "INDUSTRY":"批发和零售业", "REGION":"深圳", "OPSTATE":"存续(在营、开业、在册)", "ESTYEAR":"3年以下", "SCALE":"小微企业" }, { "ENTNAME":"暴风雨(深圳)电子商务有限公司", "UNISCID":"91440300MA5DF887XE", "INDUSTRY":"批发和零售业", "REGION":"深圳", "OPSTATE":"存续(在营、开业、在册)", "ESTYEAR":"3年以下", "SCALE":"小微企业" }, ... ]
可以看到,通过上述的方式,我们可以很容易的实现代码与SQL语句的分离。但是,对应的SQL语句依赖于数据库,可移植性差。另外,对于字段多、关联表多时,编写SQL语句的工作量很大。
总结
以上所述是小编给大家介绍的使用MyBatis进行数据库映射,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!