前天学了很多,关于java的反射机制,其实跳过了new对象,然后底层生成了字节码,创建了对应的编码。手搓了一遍源码,还是比较复杂的。
<?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="jdbc.properties"></properties>
<!--起别名,这里是对于com.mybatis.pojo中就是dao类中的起别名,对于下面这个格式的默认值是包名,不区分大小写-->
<typeAliases>
<package name="com.mybatis.pojo"/>
</typeAliases>
<environments default="development">
<!--default指定默认使用的环境-->
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--这个是对映射文件匹配对应的接口,一般接口是在mapper中两者xml文件的取名要与mapper 相同,而且需要将xml放在resours文件下,创建相同的目录.
在resources目录下创建格式是:com/mybatis/mapper
-->
<package name="com.mybatis.mapper"/>
</mappers>
</configuration>
对于多表联立,假设2表需要1表的主键(外键),但是原本是自增字段,那么就需要在标签中设
useGeneratedKeys="true" keyProperty="id",来返回对应需要的主键如:id
<insert id="insertCarUserGeneratedKeys" useGeneratedKeys="true" keyProperty="id">
insert into t_car values (null,#{carNum},#{brand},#{guidePrice},#{produceTime},#{carType})
</insert>
对于#{}与${}的区别
<delete id="deleteBatch">
delete
from t_car
where id in (${ids})
<!--#{}与${}的区别,对于前者会原来出现的地方先使用?进行占位然后将对应的数据类型的值加入到原本的位置中去,
如果是字符串就会带'',而后者就是简单的先拼接后编译,会有sql注入风险,使用的statement,它会将原先的值完整
的输入到该位置,一般是使用关键字或者需要将东西原封不动的输入才使用后者
-->
<!--
'?'单引号中的占位符号不会被识别,所以像是模糊查询这种的有四种解决方法
-->
</delete>