Mybatis的初步理解
大家好,我是小学五年级在读的蒟蒻,专注于后端,一起见证蒟蒻的成长,您的评论与赞与关注是我的最大动力,如有错误还请不吝赐教,万分感谢。一起支持原创吧!纯手打有笔误还望谅解。
-
什么是Mybatis
- Mybatis是一种持久层框架,将jdbc对操作mysql数据的过程封装起来,使开发者只用关心sql语句而不用太过关心sql的驱动,连接等一些繁琐的代码
-
Mybatis的配置
- Mybatis通过xml或注解的方式将要执行的各种statement配置起来,并通过java对象和statement中的sql映射形成最终执行的sql语句,最后由Mybatis框架执行sql语句,并将结果映射成java对象返回
-
传统JDBC的缺点
-
传统的JDBC访问数据库过程繁琐且代码有较多重复
-
sql语句是写死在程序中,一旦需要修改sql,则需要对类重新编译
-
需要不停的创建sql连接和释放
-
执行完的sql结果要手动进行处理
-
-
Mybatis的优点
-
对JDBC进行封装,简化JDBC代码
-
支持连接池,提高程序效率
-
将配置文件独立成文件,需要修改sql语句只是修改配置文件,无须重新编译
-
将返回结果转换成java对象
-
-
Mybatis的使用
首先创建数据库和表
-
在maven中导入mybatis的插件
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.6</version> </dependency>
-
编写实体类
package com.main.pojo; public class User { private Integer id ; private String username ; private String password ; private String gender ; private String addr ; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public String getAddr() { return addr; } public void setAddr(String addr) { this.addr = addr; } @Override public String toString() { return "User{" + "id=" + id + ", username='" + username + '\'' + ", password='" + password + '\'' + ", gender='" + gender + '\'' + ", addr='" + addr + '\'' + '}'; } }
-
创建接口
package com.main.mapper; import com.main.pojo.Brand; import org.apache.ibatis.annotations.Param; import java.util.List; public interface BrandMapper { /*查询所有*/ List<Brand> selectAll(); /*id查询*/ Brand selectById(int id); /*条件查询*/ List<Brand> selectByCondition(@Param("status") int status, @Param("companyName") String companyName, @Param("brandName") String brandName); }
-
编写映射文件
<?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.main.mapper.BrandMapper"> <resultMap id="brandResultMap" type="brand"> <result column="brand_name" property="brandName"/> <result column="company_name" property="companyName"/> </resultMap> <select id="selectAll" resultMap="brandResultMap"> select * from tb_brand; </select> <select id="selectById" resultMap="brandResultMap"> select * from tb_brand where id = #{id}; </select> <select id="selectByCondition" resultMap="brandResultMap"> select * from tb_brand where status = #{status} and company_name like #{companyName} and brand_name like #{brandName}; </select> </mapper>
-
编写配置文件
<?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"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </dataSource> </environment> </environments> <mappers> <mapper resource="org/mybatis/example/BlogMapper.xml"/> </mappers> </configuration>
-
注意事项
- 接口和映射文件要在同层文件目录下且名称要相同
-