MyBatis搭建

一、需求架包:

    mybatis-3.3.0.jar。以及所附带的架包和数据库架包——mysql-connector-java-5.1.13-bin.jar

下载地址:https://github.com/mybatis/mybatis-3/releases

二、配置主要配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!--这个配置开头在架包里面的说明文档里面Config是主配Mapper是映射开头-->
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

	<!-- <typeAliases>

  <!-- 引入外部配置文件 -->
  <properties resource="mysql.properties"></properties>
<!-- 这里是设置连接的内容 -->
<enviroments default="">
	<enviroment id="">
	<!-- type="JDBC" 代表使用JDBC的提交和回滚来管理事务 -->
		<transactionManager type="JDBC"></transactionManager>
		<!-- mybatis提供了3种数据源类型,分别是:POOLED,UNPOOLED,JNDI -->
            <!-- POOLED 表示支持JDBC数据源连接池 -->
            <!-- UNPOOLED 表示不支持数据源连接池 -->
            <!-- JNDI 表示支持外部数据源连接池 -->
			<dateSource tpye="POOLED">
				<!-- 这里是JDBC里面设置driver的替代 -->
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<!-- 这里是设置路径,3306端口后面接数据库的名称 -->
				<property name="url"
					value="jdbc:mysql://localhost:3306/mybatis" />
				<!-- 设置进入数据库的名字密码 -->
				<property name="username" value="进入数据库管理员名字" />
				<property name="password" value="密码" />
			</dateSource>
		
	</enviroment>
</enviroments>

<!-- 这里是指定映射文件的路径 -->
<mappers>
<mapper resource="路径/映射文件名.xml"/>
</mappers>
</configuration>

三、配置映射文件

<?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">

<!-- namespace就是指这个映射文件的名字,需要与dao接口一致 -->
<mapper namespace="这里也要全限定名不然无法找到">
<!-- 增删改的标签头都不一样。id与接口方法名绑定
		parameterType需要参数类型的全限定名
 -->
<insert id="insertCustomer" parameterType="名字">
<!--添加语句-->
insert into customer values(null,#{cname},#{cprice})
</insert>
<!--在使用多参数的是,要么在Dao接口的方法参数前使用注解@Param("参数名")在映射文件里使用,要么就直接只用参数数组下标,从零开始计数。但是使用注解后就不能再使用下标表示,没有注解的参数依旧可以用下标表示。 -->
<update id="updateCustomer">
		UPDATE customer SET cname = #{cname} WHERE cid = #{cid}
	</update>
	
	<update id="deleteCustomer">
		DELETE FROM customer
		WHERE cid = #{cid}
	</update>
</mapper>

四、创建实体类

五、创建Dao接口

六、注意事项

  1. $和#的区别

1.1 #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id".
  
1.2$将传入的数据直接显示生成在sql中。如:order by $user_id$,如果传入的值是111,那么解析成sql时的值为order by user_id,  如果传入的值是id,则解析成的sql为order by id.
  
1.3. #方式能够很大程度防止sql注入。
  
1.4.$方式无法防止Sql注入。

1.5.$方式一般用于传入数据库对象,例如传入表名.
  
1.6.一般能用#的就别用$.




MyBatis排序时使用order by 动态参数时需要注意,用$而不是#


字符串替换
默认情况下,使用#{}格式的语法会导致MyBatis创建预处理语句属性并以它为背景设置安全的值(比如?)。这样做很安全,很迅速也是首选做法,有时你只是想直接在SQL语句中插入一个不改变的字符串。比如,像ORDER BY,你可以这样来使用:
ORDER BY ${columnName}
这里MyBatis不会修改或转义字符串。

重要:接受从用户输出的内容并提供给语句中不变的字符串,这样做是不安全的。这会导致潜在的SQL注入攻击,因此你不应该允许用户输入这些字段,或者通常自行转义并检查。

2.因为现在只用了MyBatis所以需要自己用语句提交

3.在使用多参数的是,要么在Dao接口的方法参数前使用注解@Param("参数名")在映射文件里使用,要么就直接只用参数数组下标,从零开始计数。但是使用注解后就不能再使用下标表示,没有注解的参数依旧可以用下标表示。 

4.在配置文件中,像XML这样的文件使用“/”来表示分层,JAVA文件用“.”来分层。

猜你喜欢

转载自blog.csdn.net/rosemaryyoudu/article/details/84101452
今日推荐