创建sql的映射文件
<?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">
<mapper namespace="com.demo.mybatispro.mapper.AdminMapper">
namespace某一个接口的名称,就是对应的地址就是我们创建好的接口的位置的地址
增加(插入数据)
id = 接口那边唯一的标识
parameterType = 给数据库传入的参数类型
useGeneratedKeys=“true” 可以返回刚插入数据的主键
keyProperty=“id” 告知与主键列对应的属性
keyColumn=“id” 告知的是数据库这边的主键列
<insert id="saveAdmin" parameterType="Admin" useGeneratedKeys="true" keyProperty="id" keyColumn="id">
insert into admin (account,password,sex) values (#{account},#{password},#{sex})
</insert>
#{} 占位符,是经过预编译的,编译好 SQL 语句再取值,#方式能够防止 sql 注入
$ {} 拼接符,会传入参数字符串,取值以后再去编译 SQL 语句,$方式无法防止 Sql 注入
注意:MyBatis 排序时使用 order by 动态参数时需要注意,用$而不是#
修改
id = 接口那边唯一的标识
parameterType = 给数据库传入的参数类型
<update id="updateAdmin" parameterType="Admin">
update admin set account = #{account},
password = #{password},
sex = #{sex}
where id = #{id}
</update>
删除
id = 接口那边唯一的标识
parameterType = 给数据库传入的参数类型
<delete id="deleteAdmin">
delete from admin where id = #{id}
</delete>
查找
id = 接口那边唯一的标识
parameterType = 给数据库传入的参数类型
resultType 返回的数据类型,将数据库数据自动的映射到java对象中
<select id="getAdminById" resultType="Admin">
select * from admin where id = #{id}
</select>
resultType 返回的数据类型 通过反射根据返回值的类型创建一个对象
将数据库数据自动的映射到java对象中,但是有一个前提,前提是表中的列名与类中的属性名相同
但是因为再java和数据库中命名都有着各自的规定,所以mybatis在它的核心配置文件中的。
setting中有一个name="mapUnderscoreToCamelCase"的设置选项可以开启从经典的数据库名到java驼峰命名之间的转换user_name==>userName,它默认情况下为false,将属性值改为true就可以了
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
向数据库参数传递
简单参数
简单的参数形式不需要使用 parameterType 参数定义
Admin getAdminById(int id);
<delete id="deleteAdmin">
多个参数
多个参数使用@Param(“id”)进行绑定,也不需要使用 parameterType 参数定义
@Param后面括号内才的是向数据库那边传输的参数名,在数据端这里也是拿param注解标签里的字符进行数据接收
Admin getAdmin(@Param("account")String account,@Param("sex")String sex);;
传入对象
如果传入一个复杂的对象,就需要使用 parameterType 参数进行类型定义
void updateAdmin(Admin admin);
<update id="updateAdmin" parameterType="Admin">
使用map传递
也可以使用 Map 对象传递
String类型的键,Object类型的值,以map的接口
void insertUser(Map<String,Object> map);
在 sql 中使用表达式获取 map 的键即可
java中已有的类作为类型使用的时候,可以直接使用mybatis定义好的别名来使用
sql映射过来的实现代码
<select id