11:30:27
Mybatis+mysql 入门使用
Mybatis+mysql 配置文件版本入门使用
Mybatis+mysql 注解版本入门使用
一、新建一个java maven项目-Mybatis+mysql 配置文件版本入门使用
groupId:cn.zc.javapro.database
artifactId:SimpleMybatisMysql
version:1.0-SNAPSHOT
,目录结构如下所示:
1、添加依赖
a)使用maven管理依赖,以我本次使用的版本为例
4.0.0
cn.zc.javapro.database
SimpleMybatisMysql
1.0-SNAPSHOT
UTF-8
1.7
1.7
junit
junit
4.12
test
org.mybatis
mybatis
3.5.6
mysql
mysql-connector-java
8.0.13
runtime
com.alibaba
druid
1.1.16
org.projectlombok
lombok
1.18.16
org.apache.maven.plugins
maven-compiler-plugin
8
8
pom.xml
b) 也可以使用gradle管理依赖
c) 也可以去官网下载,mybatis-3官网地址:http://www.mybatis.org/mybatis-3/
2、初始化数据库和初始数据
以数据库db2021和表t_test为例,以下是sql。然后执行sql,经此步骤,数据库中存在数据库db2021和表t_test
-- 2、初始化数据库和初始数据,以数据库moy_mybatis和表t_test为例
-- 创建数据库
CREATE SCHEMA IF NOT EXISTS `db2021` Character Setutf8mb4 COLLATE utf8mb4_unicode_ci;
USE`db2021`;
-- 创建一个测试表
CREATE TABLE IF NOT EXISTS`db2021`.`t_test`(
id INT(11) AUTO_INCREMENT,
create_time DATE COMMENT '创建时间',
modify_time DATE COMMENT '修改时间',
content VARCHAR (50) COMMENT '内容',
PRIMARY KEY(id)
);
3、新建实体类TestEntity.java
为了接收从表中取出来的值,比如数据库的select语句返回来的值,我们通过实体类对象进行接收。所以需要定义表的实体类。
关键技术点是Mybatis如何实现封装,如何实现表列和实体类对象成员之间的一一映射。
packagecn.zc.javapro.database.mybatis.entity;importlombok.Getter;importlombok.Setter;importlombok.ToString;importjava.io.Serializable;importjava.util.Date;/*** [Project]:
* [Date]:2021/1/22
* [Description]: java mybatis mysql maven
*@authorzc*/
//让它实现序列化接口
@Getter
@Setter
@ToStringpublic class TestEntity implementsSerializable {privateInteger id;privateDate createTime;privateDate modifyTime;privateString content;
}
TestEntity.java
这里我们可以玩个小花样,再用个实体类QueryVo封装一下TestEntity实体类。
packagecn.zc.javapro.database.mybatis.domain;importcn.zc.javapro.database.mybatis.entity.TestEntity;public classQueryVo {privateTestEntity testEntity;publicTestEntity getTestEntity() {returntestEntity;
}public voidsetTestEntity(TestEntity testEntity) {this.testEntity =testEntity;
}
}
QueryVo.java
4、新建接口TestMapper.java
Mybatis通过定义接口,并通过配置文件或者注解,自动实现将该接口中的方法与sql语句一一对应。
当调用该接口的方法,相当于调用了对应的sql语句。
packagecn.zc.javapro.database.mybatis.mapper;importcn.zc.javapro.database.mybatis.domain.QueryVo;importcn.zc.javapro.database.mybatis.entity.TestEntity;importorg.apache.ibatis.annotations.Param;importjava.io.Serializable;importjava.util.List;/*** [Project]:
* [Email]:
* [Date]:2021/1/22
* [Description]:
*
*@authorzc*/
public interfaceTestMapper {
Listlist();
TestEntity get(Serializable id);//TestEntity get(Integer id);//TestEntity get(@Param("id") Integer id);
intinsert(TestEntity TestEntity);intupdate(TestEntity TestEntity);intdelete(Serializable id);intcount();/*** 根据名称模糊查询信息*/ListfindByContent(String content);/*** 根据queryVo中的条件查询用户*/ListfindTestByVo(QueryVo vo);
}
TestMapper.java
5、 新建实体映射文件Test.xml
这里主要配置 接口类的方法 与 sql语句一一对应关系。比如, TestMapper 与 TestEntity、QueryVo等。
这里的namespace就是写TestMapper全类名,否则不能使用动态代理的方式调用接口TestMapper。后面会讲一下parameterType如何配置多个参数。
/p>
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
SELECT*FROM t_test
SELECT count(*) FROM t_test
SELECT id,create_time as createTime,modify_time as modifyTime, content
FROM t_test WHERE id=#{id}
INSERT INTO t_test (create_time,modify_time,content)
VALUES (#{createTime},#{modifyTime},#{content})
UPDATE t_test SET modify_time=#{modifyTime},content=#{content}
WHERE id=#{id}
DELETE FROM t_test WHERE id=#{id}
select id, create_time as createTime, modify_time as modifyTime, content
from t_test where content like'%${content}%'
select id, create_time as createTime, modify_time as modifyTime, content
from t_test where id like #{testEntity.id};
Test.xml
6、新建mybatis配置信息文件mybatis-config.xml
这里主要配置项目实体类对应的包名,可以扫描实体类。并配置了mysql数据库的连接信息。以及配置了 接口类与实体类映射的配置文件(这里例如Test.xml)的路径。
/p>
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
mybatis-config.xml
这里重点说一下,我们可以单独通过XML来配置环境变量。
也可以通过 xml + properties 文件进行配置,
也可以通过 properties + xml文件进行配置,
还可以通过 yml