#{}表示一个占位符,通过ognl来读取属性值
${}表示一个拼接号,将接受到的参数的内容不加任何修饰拼接到sql中。会引用sql注入,所以不建议使用
selectOne表示查询出一条记录进行映射,如果使用selectOne可以实现,那么使用selectList也可以实现(list中只有一个对象)
selectList表示查询一个列表记录
select * from user where user like %${value}%
insert into user(id, userName, password) values(#{id}, #{userName}, #{password})
id是自增的 可以不写
<insert id="addUser" parameterType="com.hust.model.User">
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
SELECT LAST_INSERT_ID()
selectKey>
insert into user(userName, password) values(#{userName}, #{password})
insert>
uuid
<insert id="addUser" parameterType="com.hust.model.User">
<selectKey keyProperty="id" order="BEFORE" resultType="java.lang.String">
SELECT uuid()
selectKey>
insert into user(id, userName, password) values(#{id}, #{userName}, #{password})
insert>
hibearnate:是一个标准的ORM(对象关系映射)框架。入门门槛高,不需要写sql,sql自动生成。
对sql语句进行优化、修改比较困难。
应用场景:适用需求变化不多的中小型项目。
mybatis:专注sql本身,需要程序员自己编写sql语句。sql修改,优化比较方便。它是一个不完全的ORM框架。
mybatis也可以实现映射(输入输出映射)
适用于需求变化较多的项目,比如互联网项目。
mapper代理方法
编写mapper接口(相当于dao接口),需要遵循一些开发规范,mybatis可以自动生成mapper接口实现类代理对象
编写mapper.xml映射文件
开发规范
1、mapper.xml
namespace 命名空间,作用就是对sql进行分类管理,理解sql隔离
2、mapper.java接口中的方法名和mapper.xml中的statement的id一致
3、mapper.java接口中的方法参数类型、返回类型和mapper.xml中的statement的perameterType、resultType一致。
mapper接口方法的参数只能有一个,如果需要多个参数,则需要封装成一个对象来作为参数
即可以使用包装类型的pojo满足不同的业务方法的需求,但service中建议不要使用包装类型
POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans
mybatis默认支持的别名
int long bigDecimal等基本的数据类型
<typeAliases>
<typeAlias alias="User" type="com.hust.model.User" />
<package name="com.hust.model"/>
<package name="com.hust.model"/>
typeAliases>
typeHandlers类型处理器
通常mybatis提供的类型处理器能满足日常需求
<configuration>
<typeAliases>
<typeAlias alias="User" type="com.hust.model.User" />
<package name="com.hust.model"/>
<package name="com.hust.model"/>
typeAliases>
<mappers>
<mapper resource="com/hust/mapping/UserMapper.xml" />
<mapper class="com.hust.dao.UserMapper"/>
<package name="com.hust.dao"/>
mappers>
configuration>
Original: https://www.cnblogs.com/muhe221/p/8950478.html
Author: 牧 天
Title: mybatis
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/543315/
转载文章受原作者版权保护。转载请注明原作者出处!