注释都在代码里,最好复制了再看!
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方法,要导入依赖、下载插件才可以使用
org.projectlombok lombok 1.18.24
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 关联起来的。
mybatis-config.xml
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;@BeforeClasspublic 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 countryList) {
// for (Country country : countryList) {
// System.out.printf("%-4d%4s%4s\n", country.getId(), country.getCountryname(), country.getCountrycode());
// }
// }@Testpublic 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();}}@Testpublic void testSelectAll() {SqlSession sqlSession = getSqlSession();try {UserMapper userMapper = sqlSession.getMapper(UserMapper.class);List 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
上一篇:UE5笔记【五】操作细节——光源、光线参数配置、光照图修复
下一篇:Vue学习笔记