MyBatis简单使用和入门理解

可以使用Java JDBC API直接操作数据库,但使用框架会更便捷、高效而且还可以利用框架提供的某些强大的功能(比如事务管理),而Mybatis就是这样的一个框架。

Mybatis主要由四大部分组成:

①SqlSessionFactoryBuilder

②SqlSessionFactory

③SqlSession

④SQL Mapper

要想访问(操作)数据库:要建立数据库连接,要定义数据库操作方法(insert/update/delete...),要有具体的操作数据库中的表 的SQL语句,而SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession就是用来负责底层建立数据库连接、管理连接、释放连接等。对于业务层而言,关心的是:定义一个SQL语句,让Mybatis方便地把SQL语句执行后的结果 呈现给使用者,而这可以通过SQL Mapper来完成。

SQL Mapper由两部分组成,一是:JAVA 接口,该接口中定义了 业务层 要对数据库进行何种操作;另一部分是:XML配置文件,定义了具体的数据库操作语句和映射规则。

假设要操作数据库test中的表 t_role,t_role有三个字段:id ,role_name,和 note

+-----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+----------------+
| id | bigint(20) | NO | PRI | NULL | auto_increment |
| role_name | varchar(20) | YES | | NULL | |
| note | varchar(20) | YES | | NULL | |
+-----------+-------------+------+-----+---------+----------------+

该表对应的POJO类如下:

 

package chapter2.pojo; public class Role { private Long id; private String roleName; private String note; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getRoleName() { return roleName; } public void setRoleName(String roleName) { this.roleName = roleName; } public String getNote() { return note; } public void setNote(String note) { this.note = note; } @Override public String toString() { return "id:" + id + ", roleName:" + roleName + ", note:" + note; } }

JAVA接口中定义的一些操作如下:

package chapter2.mapper;
import
java.util.List; import java.util.Map; import chapter2.pojo.Role; public interface RoleMapper { public Role getRole(Long id); public int deleteRole(Long id); public int insertRole(Role role); public List<Role> findRoleByMap(Map<String, String> params); }

与该接口对应,定义的具体操作数据库的配置文件RoleMapper.xml 如下:

<?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="chapter2.mapper.RoleMapper"> <resultMap type="chapter2.pojo.Role" id="roleMap"> <id property="id" column="id"/><!-- primary key --> <result property="roleName" column="role_name"/><!-- 普通列的映射关系 --> <result property="note" column="note"/> </resultMap> <select id="getRole" parameterType="long" resultType="Role"> select id, role_name as roleName, note from t_role where id = #{id} </select> <insert id="insertRole" parameterType="Role"> insert into t_role(role_name,note) values(#{roleName},#{note}) </insert> <delete id="deleteRole" parameterType="long"> delete from t_role where id = #{id} </delete> <select id="findRoleByMap" parameterType="map" resultMap="roleMap"> select id,role_name,note from t_role where role_name like concat('%', #{roleName},'%') and note like concat('%',#{note},'%') </select> </mapper>

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/9e13ef7fd50a4256e36217c7f5b18702.html