注释都在代码里,最好复制了再看!
- CREATE TABLE sys_user(
- id BIGINT NOT NULL AUTO_INCREMENT COMMENT '用户 ID',
- user_name VARCHAR(50) COMMENT '用户名',
- user_password VARCHAR(50) COMMENT '密码',
- user_email VARCHAR(50) COMMENT '邮箱',
- user_info TEXT COMMENT '简介',
- head_img BLOB COMMENT '头像',
- create_time DATETIME COMMENT '创建时间',
- PRIMARY KEY (id)
- );
- ALTER TABLE sys_user COMMENT '用户表';
-
- CREATE TABLE sys_role(
- id BIGINT NOT NULL AUTO_INCREMENT COMMENT '角色 ID',
- role_name VARCHAR(50) COMMENT '角色名',
- enabled INT COMMENT '有效标志',
- create_by BIGINT COMMENT '创建人',
- create_time DATETIME COMMENT '创建时间',
- PRIMARY KEY (id)
- );
- ALTER TABLE sys_role COMMENT '角色表';
-
- CREATE TABLE sys_prvilege(
- id BIGINT NOT NULL AUTO_INCREMENT COMMENT '权限 ID',
- privilege_name VARCHAR(50) COMMENT '权限名称',
- privilege_url VARCHAR (200) COMMENT '权限 URL',
- PRIMARY KEY (id)
- );
- ALTER TABLE sys_prvilege COMMENT '权限表';
-
- CREATE TABLE sys_user_role(
- user_id BIGINT COMMENT '用户 ID ',
- role_id BIGINT COMMENT '角色 ID'
- );
- ALTER TABLE sys_user_role COMMENT '用户角色关联表';
-
- CREATE TABLE sys_role_prvilege(
- role_id BIGINT COMMENT '角色ID',
- privilege_id BIGINT COMMENT 'ID'
- );
- ALTER TABLE sys_role_prvilege COMMENT '角色权限关联表';
- CREATE TABLE sys_user(
- id BIGINT NOT NULL AUTO_INCREMENT COMMENT '用户 ID',
- user_name VARCHAR(50) COMMENT '用户名',
- user_password VARCHAR(50) COMMENT '密码',
- user_email VARCHAR(50) COMMENT '邮箱',
- user_info TEXT COMMENT '简介',
- head_img BLOB COMMENT '头像',
- create_time DATETIME COMMENT '创建时间',
- PRIMARY KEY (id)
- );
- ALTER TABLE sys_user COMMENT '用户表';
-
- CREATE TABLE sys_role(
- id BIGINT NOT NULL AUTO_INCREMENT COMMENT '角色 ID',
- role_name VARCHAR(50) COMMENT '角色名',
- enabled INT COMMENT '有效标志',
- create_by BIGINT COMMENT '创建人',
- create_time DATETIME COMMENT '创建时间',
- PRIMARY KEY (id)
- );
- ALTER TABLE sys_role COMMENT '角色表';
-
- CREATE TABLE sys_prvilege(
- id BIGINT NOT NULL AUTO_INCREMENT COMMENT '权限 ID',
- privilege_name VARCHAR(50) COMMENT '权限名称',
- privilege_url VARCHAR (200) COMMENT '权限 URL',
- PRIMARY KEY (id)
- );
- ALTER TABLE sys_prvilege COMMENT '权限表';
-
- CREATE TABLE sys_user_role(
- user_id BIGINT COMMENT '用户 ID ',
- role_id BIGINT COMMENT '角色 ID'
- );
- ALTER TABLE sys_user_role COMMENT '用户角色关联表';
-
- CREATE TABLE sys_role_prvilege(
- role_id BIGINT COMMENT '角色ID',
- privilege_id BIGINT COMMENT 'ID'
- );
- ALTER TABLE sys_role_prvilege COMMENT '角色权限关联表';
-
- INSERT INTO sys_user VALUES ('2','admin','123456','admin@mybatis.tk','管理员',NULL,'2016-04-01 17:00:58');
- INSERT INTO sys_user VALUES ('1001','test','123456','test@mybatis.tk','测试用户',NULL,'2016-04-01 17:00:58');
- INSERT INTO sys_role VALUES ('1','管理员','1','1','2016-04-01 17:02:14');
- INSERT INTO sys_role VALUES ('2','普通用户','1','1','2016-04-01 17:02:34');
- INSERT INTO sys_user_role VALUES ('1','1');
- INSERT INTO sys_user_role VALUES ('1','2');
- INSERT INTO sys_user_role VALUES ('3','2');
- INSERT INTO sys_prvilege VALUES ('1','用户管理','/users');
- INSERT INTO sys_prvilege VALUES ('2','角色管理','/roles');
- INSERT INTO sys_prvilege VALUES ('3','系统日志','/logs');
- INSERT INTO sys_prvilege VALUES ('4','人员维护','/persons');
- INSERT INTO sys_prvilege VALUES ('5','单位维护','/companies');
- INSERT INTO sys_role_prvilege VALUES ('1','l');
- INSERT INTO sys_role_prvilege VALUES ('1','1001');
- INSERT INTO sys_role_prvilege VALUES ('1','2');
- INSERT INTO sys_role_prvilege VALUES ('2','4');
- INSERT INTO sys_role_prvilege VALUES ('2','5');
- package tk.mybatis.simple.model;
-
- import java.util.Date;
-
- import lombok.Data;
-
- @Data
- public class SysUser {
- private Long id;
- private String userName;
- private String userPassword;
- private String userInfo;
- private byte[] headImg;
- private Date createTime;
- private String userEmail;
- }
@Date可以省略get、set方法,要导入依赖、下载插件才可以使用
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.24</version> </dependency>
- package tk.mybatis.simple.model;
-
- import lombok.Data;
-
- @Data
- public class SysUserRole {
- private Long userId;
- private Long roleId;
- }
创建一下文件

xml:
需要注意 是<mapper >根标签 name space 属性。当 app 接口和 XM 文件关联的时候,命名空间口amespace 值就需要配置成接口的全限定名称,例如 UserMapper 接口对 应的 tk.mybat. simple.mapper.UserMapper内部就是通过这个值将接口和XML 关联起来的。
- "1.0" encoding="UTF-8" ?>
- mapper
- PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
- <mapper namespace="tk.mybatis.simple.mapper.UserMapper">
- mapper>
mybatis-config.xml
- <mappers>
- <mapper resource="mapper/CountryMapper.xml"/>
- <mapper resource="mapper/UserMapper.xml"/>
- <mapper resource="mapper/RoleMapper.xml"/>
- <mapper resource="mapper/PrivilegeMapper.xml"/>
- <mapper resource="mapper/UserRoleMapper.xml"/>
- <mapper resource="mapper/RolePrivilegeMapper.xml"/>
- </mappers>
- "1.0" encoding="UTF-8" ?>
- mapper
- PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
- <mapper namespace="tk.mybatis.simple.mapper.UserMapper">
-
-
- <resultMap id="userMap" type="tk.mybatis.simple.model.SysUser">
- <id property="id" column="id"/>
- <result property="userName" column="user_name"/>
- <result property="userPassword" column="user_password"/>
- <result property="userEmail" column="user_email"/>
- <result property="userInfo" column="user_info"/>
- <result property="headImg" column="head_img" jdbcType="BLOB"/>
- <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
- resultMap>
- <select id="selectById" resultMap="userMap">
- select * from sys_user where id = #{id}
- select>
- <select id="selectAll1" resultType="tk.mybatis.simple.model.SysUser" >
- select id,
- user_name userName,
- user_password userPassword,
- user_email userEmail,
- user_info userInfo ,
- head img headImg,
- create_time createTime
- from sys_user
- select>
-
- <select id= "selectAll2" resultType="tk.mybatis.simple.model.SysUser" >
- select id, user_name , user_password, user_email , user_info, head_img, create_time from sys_user
- select>
- mapper>
- package tk.mybatis.simple.mapper;
-
- import org.apache.ibatis.io.Resources;
- import org.apache.ibatis.session.SqlSession;
- import org.apache.ibatis.session.SqlSessionFactory;
- import org.apache.ibatis.session.SqlSessionFactoryBuilder;
- import org.junit.BeforeClass;
-
- import java.io.IOException;
- import java.io.Reader;
-
- public class BaseMapperTest {
- private static SqlSessionFactory sqlSessionFactory;
- @BeforeClass
- public static void init () {
- try {
- Reader reader = Resources.getResourceAsReader ("mybatis-config.xml");
- sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
- reader.close();
- } catch (IOException ignore) {
- ignore.printStackTrace();
- }
- }
- public SqlSession getSqlSession () {
- return sqlSessionFactory.openSession();
- }
- }
- package tk.mybatis.simple.mapper;
-
- import org.apache.ibatis.io.Resources;
- import org.apache.ibatis.session.SqlSession;
- import org.apache.ibatis.session.SqlSessionFactory;
- import org.apache.ibatis.session.SqlSessionFactoryBuilder;
- import org.junit.Assert;
- import org.junit.BeforeClass;
- import org.junit.Test;
- import tk.mybatis.simple.model.Country;
- import tk.mybatis.simple.model.SysUser;
-
- import java.io.IOException;
- import java.io.Reader;
- import java.util.List;
-
- public class CountryMapperTest extends BaseMapperTest {
- private static SqlSessionFactory sqlSessionFactory;
-
- // @BeforeClass
- // public static void init() {
- // try {
- 通过 Resources 工具类将 ti -config.xm 配置文件读入 Reader
- // Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
- 再通过 SqlSessionFactoryBuilder 建造类使用 Reader 创建 SqlSessionFactory工厂对象。
- 在创建 SqlSessionFactory 对象的过程中
- 首先解 mybatis-config.xml 配置文件,读取配置文件中的 mappers 配置后会读取全部的 Mapper xml 进行具体方法的解析,
- 在这些解析完成后, SqlSessionFactory 就包含了所有的属性配置和执行 SQL 的信息。
- // sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
- 使用时通过 SqlSessionFactory 工厂对象获取 splSession
- // reader.close();
- // } catch (IOException ignore) {
- // ignore.printStackTrace();
- // }
- // }
- //
- // private void printCountryList(List<Country> countryList) {
- // for (Country country : countryList) {
- // System.out.printf("%-4d%4s%4s\n", country.getId(), country.getCountryname(), country.getCountrycode());
- // }
- // }
-
- @Test
- public void testSelectByid() {
- SqlSession sqlSession = getSqlSession();
- try {
- UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
- SysUser user = userMapper.selectById((long) 1);
- Assert.assertNotNull(user);
- Assert.assertEquals("admin", user.getUserName());
- } finally {
- sqlSession.close();
- }
- }
-
- @Test
- public void testSelectAll() {
- SqlSession sqlSession = getSqlSession();
- try {
- UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
- List<SysUser> userList = userMapper.selectAll();
- Assert.assertNotNull(userList);
- Assert.assertTrue(userList.size() > 0);
- } finally {
- sqlSession.close();
- }
- }
- }

(1)mapper接口存放在java下的mapper包里,mapper.xml存放在资源包下面!

namespace的值是对应的mapper接口的全限定名称
![]()
(2)实体类用驼峰命名法,sql 里的映射
1.用别名法映射
2.自动映射
配置:
3.使用 resultMap