一、知识回顾
1、学习了mybatis的增删改查
注意事项:
1 映射文件的id与接口名字对应
2 在映射文件中命名空间是定义接口的位置
3、select标签 parameterType 传入的参数 resultType 接收数据的类型 传入参数和接收数据的类型可以写别名 就是写int Integer 都行
4、insert标签
注意实现是: 如果需要回填主键的话需要使用
<selectKey>
sql语句为 select LAST_INSERT_ID();
</selectKey>
数据库列名 keyColumn
java属性 keyProperty
接收数据类型 resultType
执行时机 order
后面写insert标签
<selectKey>与insert标签连用
5、delete标签 id属性 等
6、 update标签 等
7、分页查询 select ...... limit a ,b; a是起始 (开始为0) b为几条数据
涉及到了传参问题
顺序传参 arg0 arg1开始 param1 param2 (不利于开发--> 数据库的列名不能对应)
@Param 在接口方法传参处 写入映射文件中参数
pojo封装 , 将参数写入在java类中,#{pojo属性}
map封装 将参数以为key
8、properties这个
主要是数据源的配置
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://192.168.183.131:3306/mybatis jdbc.username=root jdbc.password=root
9、typealias别名
给一个类取别名
typealiases 标签下 typealias标签 type为类的全名 alias为别名
给一个包下取别名 typealiase 标签下 typealias 标签 type为包名
二、今日学习
1、environment标签为mybatis配置数据环境
<environments default="mysql"> <environment id="mysql"> <transactionManager type="JDBC"></transactionManager> <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>
<transactionManager type="JDBC"></transactionManager>
中transactionManager type JDBC的意思是使用jdbc的提交和回滚
然后Managed是不做事务
<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>
这是数据库连接池 datasource , 然后 type后面值有三个可写
一个是POOLED 使用连接池管理连接 mybatis自带连接池
一个是UNPOOLED 不使用连接池1 ,使用jdbc进行连接
一个是JNDI 由javaee的服务器管理连接
2、mappers标签 就是注册映射文件的或者是注册持久层接口的
有四种注册方法
(mappes标签)
一种是绝对路径注册映射文件
<mapper resouces= "">
</mapper>
二种是相对路径注册映射文件
<mapper url >
</mapper>
三种 注册持久层层接口
<mapper class= " ">
</mapper>
四种 注册一个包下的所有持久层接口
<mapper >
<package name >
</mapper>
3、resultMap标签 使用<resultMap>
自定义映射关系:
select 标签 中写resultMap,中写 resultMap的id
<!-- id:自定义映射名 type:自定义映射的对象类型 --> <resultMap id="teacherMapper" type="com.itbaizhan.pojo.Teacher"> <!-- id定义主键列 property:POJO属性名 column:数据库列名 --> <id property="id" column="tid"></id> <!-- result定义普通列 property:POJO属性名 column:数据库列名 --> <result property="teacherName" column="tname"></result> </resultMap>
4、sql或者 include标签
sql定义sql语句的片段 , include引入该片段
就是解决了sql语句里面列名重复 的问题,就不用一直写
<sql id="user"> id , username , sex , address </sql>
<insert id="insertUser" parameterType="User"> insert into user <include refid="user"></include> values (#{id} , #{username} , #{sex} , #{address}) </insert>
5、特殊字符处理
在mybatis的映射文件中尽量不适用一些特殊字符 > <
符号 | 实体 |
---|---|
< | & lt; |
> | & gt; |
& | & amp; |
‘ | & apos; |
“ | & quot; |
6、if标签
用法<if test = "">
test里面写入属性 pojo的属性
多个条件连接使用 and 或 or
考虑到后面条件都不符合 所以 where 1 = 1 防止不成立
7、where条件 这可以代替where 1 =1
8、set标签 是使用在update语句 ,
借助<if>标签 , set标签会去掉最后一个if标签的,
set作用: 自动添加set关键字,并去掉最后一个if语句中多余的逗号
9、choose类似switch语句 , when标签类似与java的case , otherwise标签相当于 default
10、foreach标签
其中属性有open 开始的sql语句 close 是结束的sql语句 separator 是间隔符 item表示本次遍历获取的元素,遍历List、Set、数组时表示每项元素,遍历map时表示键值对的值。 index 遍历List、数组时表示遍历的索引,遍历map时表示键值对的键。
arrary是数组 list是 list集合