MyBatis框架介绍,以及SpringMvc的JSR拦截器设置

本文将会简单介绍MyBatis框架,如何与数据库连接,但是像是生成随机id,动态sql语句,我会放在进阶论述。
还有SpringMvc的JSR拦截器我会在本文详细叙述。

一、MyBatis框架简述

程序员需要写sql保证灵活,优化方便,而MyBatis不是一个完全的ORM,且适用于灵活多变的互联网金融类型项目。
下面来简单说一下ORM框架的特点:

  1. 将对关系模型(通过sql操作数据库)的操作转化成对对象模型(通过引用.方法)的操作(说人话,就是不用写sql语句)
  2. 有类属性和表字段的一一映射关系(类属性和表字段必须一一对应,最好相同,不然要写手动映射,这个进阶篇再说)。

而MyBatis框架不满足第一点,所以称它为一个不完全的ORM框架,与之对应的是hiberante框架,这个就是完全的ORM框架,适用于中小型项目。

二、MyBatis项目配置

首先声明本项目是在Maven框架的基础上创建的:

  1. 首先去Pom.xml配置jar包:
<dependencies>
 <dependency>
   <groupId>org.mybatis</groupId>
   <artifactId>mybatis</artifactId>
   <version>3.3.0</version>
 </dependency>
 
 <!--日志包 -->
 <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.5</version>
 </dependency>
 <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.5</version>
    <scope>test</scope>
 </dependency>
 
 <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.0.8</version>
 </dependency>
 
 <!-- 字节码包 -->
 <dependency>
    <groupId>cglib</groupId>
    <artifactId>cglib</artifactId>
    <version>2.2.2</version>
 </dependency>
 <dependency>
    <groupId>org.javassist</groupId>
    <artifactId>javassist</artifactId>
    <version>3.17.1-GA</version>
 </dependency>
	 
</dependencies>

再去src/main/resources配置mybatis.xml文件:
但要注意两点:
(1). 和spring整合后environments配置将废除,但在里面的连接信息依旧在配置。
(2). 映射文件说简单点就是数据传输层的对关系模型的操作文件(自行体会哈,这部分人话我还真不会说),需要在连接数据库后,对映射文件进行加载,下面我也会详细介绍映射文件,以及各种加载方式:

<?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>
<!-- 加载属性文件 -->
<properties resource="db.properties"></properties>
<!-- 和spring整合后 environments配置将废除-->
<environments default="development">
	<environment id="development">
	<!-- 使用jdbc事务管理,事务控制由mybatis-->
		<transactionManager type="JDBC" />
	<!-- 数据库连接池,由mybatis管理-->
		<dataSource type="POOLED">
			<property name="driver" value="${mysql.driver}" />
			<property name="url" value="${mysql.url}" />
			<property name="username" value="${mysql.user}" />
			<property name="password" value="${mysql.pwd}" />
		</dataSource>
	</environment>
</environments>
<!--加载映射文件-->
<mappers>
    <!-- 当的映射文件的加载 -->
    <mapper resource="com/it/bean/student.xml"/>
</mappers>
</configuration>
  1. 同级目录下创建db.properties,主要用于填写与数据库相关的连接信息(当然这些信息可以在mybatis.xml文件里写,在properties写property即可),但是性能就会变差,具体代码如下:
    (PS:默认用的是JDBC连接哈)
mysql.driver=com.mysql.jdbc.Driver
mysql.url=jdbc:mysql://localhost:3306/test
mysql.user=root
mysql.pwd=123456
  1. 再在同级目录下创建log4j.properties文件,主要用来配置日志信息的。具体配置代码如下:
#For JBoss: Avoid to setup Log4J outside $JBOSS_HOME/server/default/deploy/log4j.xml!
#For all other servers: Comment out the Log4J listener in web.xml to activate Log4J.
log4j.rootLogger=debug, stdout, logfile

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n

log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.File=c\:\\aa\\my.log
log4j.appender.logfile.MaxFileSize=1MB
#Keep three backup files.
log4j.appender.logfile.MaxBackupIndex=3
#Pattern to output: date priority [category] - message
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
  • 创建dto或者bean对象就自然不用说了,总之要和数据库字段栏一一对应。

三、Mybatis映射文件介绍

  • 创建Mybatis映射文件
    映射文件就是一个内部封装了sql语句的对数据库对应表进行增删改查的xml文件,正如上面所说,它是对关系模型的操作文件。

下面我会把该文件从上到下的规范信息详细叙述一遍:

1. mapper标签

mapper标签是包裹对某个表的增删改查操作,namespace就是填对应接口类的地址的属性

<mapper namespace="com.it.mapper......"></mapper>

2. 增删改查操作

增删改查操作都是由一个个标签包裹起来的,而且标签具有相同的的属性,如下:
(1). id:这个可以看做成具体调用sql语句的方法名,在其他类可以通过命名对象的方法调用这个方法。
(2). parameterType:这属性被称为传入参数:可以看成方法形参的输入类型。
(3). resultType:此属性被称为传出参数,可看成方法的输出类型。
然后就是不同类型的sql语句所对应的标签:

  • 增加是<select></select>
  • 删除是<delete></delete>
  • 修改是<upload></upload>
  • 删除是<delete></delete>
    但要注意:这些标签本质都是statement
    其他我就不多说了,放在Mybatis进阶里说了

3. Mybatis属性加载顺序:

Mybatis属性加载顺序得按照这个来,不然就会报错

  • 首先在properties元素体内定义的属性首先被读取。
  • 然后读取properties元素中resource或url加载的属性,他会覆盖已读取的同名属性。
  • 最后再读取parameterType传递的属性,它会覆盖已读取的同名属性。
  • 总结:
    详细执行顺序:
properties(属性),settings(二级缓存),typeAliases(起别名),typeHandlers,objectFactory,objectwrapperFactory,plugins,environments,databaseIdProvider,mappers

四、SrpingMvc的JSR拦截器设置

拦截器的作用是为了防止有人直接输入网址且没通过登陆界面访问。
SpringMvc自带的中央处理器会拦截静态资源,这个我在上篇已经叙述过了,有需要的可以去瞅瞅,具体地址如下:
在第三章第一节就有说

但要注意的是:
JSP拦截器和Fliter过滤器的区别是,拦截器主要拦截的是请求,而过滤器过滤的是页面

1.相关配置

(1). JSR380所需要的Jar包:

<dependency>
	<groupId>javax.validation</groupId>
	<artifactId>validation-api</artifactId>
	<version>1.0.0.GA</version>
</dependency>

<dependency>
	<groupId>org.hibernate</groupId>
	<artifactId>hibernate-validator</artifactId>
	<version>4.3.2.Final</version>
</dependency>

<groupId>org.hibernate</groupId>
	<artifactId>hibernate-validator</artifactId>
	<version>5.2.4.Final</version>
</dependency>

(2). 验证所需的注解:
直接在bean或者dto对象设置需要验证的属性上写对应注解即可,注解如下:

注解注解验证含义
@Null验证对象是否为null
@NotNull验证对象是否不为null, 无法查检长度为0的字符串
@NotBlank检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格.
@NotEmpty检查约束元素是否为NULL或者是EMPTY.
-------------
Booelan检查
@AssertTrue验证 Boolean 对象是否为 true
@AssertFalse验证 Boolean 对象是否为 false
-------------
长度检查
@Size(min=, max=)验证对象(Array,Collection,Map,String)长度是否在给定的范围之内
@Length(min=, max=)Validates that the annotated string is between min and max included.
-------------
日期检查
@Past验证 Date 和 Calendar 对象是否在当前时间之前
@Future验证 Date 和 Calendar 对象是否在当前时间之后
@Pattern验证 String 对象是否符合正则表达式的规则
-------------
数值检查建议使用在Stirng,Integer类型,不建议使用在int类型上,因为表单值为“”时无法转换为int,但可以转换为Stirng为"",Integer为null
@Min验证 Number 和 String 对象是否大等于指定的值
@Max验证 Number 和 String 对象是否小等于指定的值
@DecimalMax被标注的值必须不大于约束中指定的最大值. 这个约束的参数是一个通过BigDecimal定义的最大值的字符串表示.小数存在精度
@DecimalMin被标注的值必须不小于约束中指定的最小值. 这个约束的参数是一个通过BigDecimal定义的最小值的字符串表示.小数存在精度
@Digits验证 Number 和 String 的构成是否合法
@Digits(integer=,fraction=)验证字符串是否是符合指定格式的数字,interger指定整数精度,fraction指定小数精度。
@Range(min=, max=)检查数字是否介于min和max之间.
@Range(min=10000,max=50000,message=“range.bean.wage”)private BigDecimal wage;

剩下还有一些Mybatis的基础操作,我会放在以后的Mybatis进阶论述清楚的,今天就到这了吧,大家晚安~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小航要快乐呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值