目录
1.什么是mybatis:
Mybatis历史
原是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation 迁移到了 Google Code,随着开发团队转投Google Code 旗下, iBatis3.x正式更名为MyBatis。
mybatis概述:
mybatis是一个优秀的数据持久层(负责与数据库进行交互。).mybatis是对jdbc进行轻量级的封装.提供专门xml文件来进行配置,以及可以自动的对查询结果进行封装,
是一个ORM(java对象与数据库表映射)实现的数据持久层的框架.提供一些自己定义的类和接口来实现功能.支持动态sql,以及数据缓存.
2.mybatis搭建
Mybatis 中文官网
https://mybatis.org/mybatis-3/zh/getting-started.html
- 1.创建一个maven项目
- 添加mybatis,mysql依赖的jar
<!--Mybatis jar包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<!--mysql jar包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
3.创建一个数据库表,以及一个应的java模型类
4.创建mybatis全局配置文件
配置数据库连接信息,配置sql映射文件
<?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>
<environments default="development">
<environment id="development">
<dataSource type="POOLED">
<property name="driver" value="自己填" />
<property name="url" value="自己填" />
<property name="username" value="自己填" />
<property name="password" value="自己填"/>
</dataSource>
</environment>
</environments>
</configuration>
4.创建一个访问接口
定义一个方法
5.创建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="接口地址">
注:定义sql语句
</mapper>
6 .测试MyBatis
3.mybatis应用
1.参数传递
单个参数通过定义接口直接传递
多个参数使用通过定义接口@Param(“id”)绑定
如果传入对象通过定义接口直接传递
2.增删改查
增
<insert id="addAamin" parameterType="传入参数类型">
//addAamin接口定义的方法名
insert into admin (account,password) value (#{account},#{password})
//#{account},#{password}传入参数
</insert>
删
<delete id="deleteAsmin" parameterType=""传入参数类型">
//deleteAsmin接口定义的方法名
delete from admin where id=#{id}
//#{id}传入参数
</delete>
改
<update id="updateAdmin" parameterType="Admin">
//updateAdmin接口定义的方法名,Admin传入参数类型
update admin set account=#{account},password=#{password} where id=#{id}
//#{password} 和#{id} 传入参数
</update>
查
<select id="findadminbyID" resultType="Admin" parameterType="int">
//findadminbyID接口定义的方法名,Admin传出参数类型 ,int传入参数类型
select * from admin where id=#{id}
//#{id}传入参数
</select>
#{} 和${}区别
#{} 占位符,是经过预编译的,编译好SQL语句再取值,#方式能够防止sql注入
#{}:select * from admin where uid=#{id}
$ {} 拼接符,会传入参数字符串,取值以后再去编译SQL语句,$方式无法防止Sql
注入 ${}
${}:select * from admin where id= ‘1’
注意:MyBatis排序时使用order by 动态参数时需要注意,用 $而不是#