mybatis搭建入门、配置及实现增删改查
mybatis搭建入门、配置及实现增删改查
1.开发环境
IDE:idea 2019.1
构建工具:maven 3.8.2
MySQL版本:MySQL 8.0
MyBatis版本:MyBatis 3.4.6
2.创建maven工程
-
创建maven项目,建议把外层src文件夹删掉,再建立二级模块,这样方便用外层xml做全局配置

-
在外层pom.xml中导入依赖
<dependencies><dependency><groupId>org.mybatisgroupId><artifactId>mybatisartifactId><version>3.4.6version>dependency><dependency><groupId>mysqlgroupId><artifactId>mysql-connector-javaartifactId><version>8.0.16version>dependency><dependency><groupId>junitgroupId><artifactId>junitartifactId><version>3.8.1version><scope>testscope>dependency>dependencies>
3.创建MyBatis的核心配置文件
在‘resources’文件夹下创建一个xml核心配置文件,习惯上命名为mybatis-config.xml,这个文件名仅仅只是建议,并非强制要求。将来整合Spring
之后,这个配置文件可以省略,所以大家操作时可以直接复制、粘贴。
核心配置文件主要用于配置连接数据库的环境以及MyBatis的全局配置信息

DOCTYPE configurationPUBLIC "-//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="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/数据库名?serverTimezone=Asia/Shanghai"/><property name="username" value="数据库用户名"/><property name="password" value="数据库密码"/>dataSource>environment>environments><mappers><mapper resource="xxx.xml"/>mappers>
configuration>
4.创建实体类
在src/main文件夹中创建java实体类com.mojito.User
用alt+insert快速构造get set方法
public class User {private int id;private String name;private String pwd;@Overridepublic String toString() {return "User{" +"id=" + id +", name='" + name + '\'' +", pwd='" + pwd + '\'' +'}';}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPwd() {return pwd;}public void setPwd(String pwd) {this.pwd = pwd;}public User() {}public User(int id, String name, String pwd) {this.id = id;this.name = name;this.pwd = pwd;}}
5.创建mapper接口
创建接口类“com.mapper.UserMapper”。MyBatis中的mapper接口相当于以前的dao。但是区别在于,mapper仅仅是接口,我们不需要提供实现类。
public interface UserMapper {/** mybatis面向接口编程的两个一致* 1.映射文件的namespace要和mapper的全类名保持一致* 2.映射文件中sql语句的id要和mapper接口中的方法名一致** 表-实体类-mapper接口-映射文件* *//*** 添加用户信息*/int insertUser();
}
6.创建MyBatis的映射文件
相关概念:ORM(Object Relationship Mapping)对象关系映射。
对象:Java的实体类对象
关系:关系型数据库
映射:二者之间的对应关系1、映射文件的命名规则:
表所对应的实体类的类名+Mapper.xml
例如:表user,映射的实体类为User,所对应的映射文件为UserMapper.xml
因此一个映射文件对应一个实体类,对应一张表的操作
MyBatis映射文件用于编写SQL,访问以及操作表中的数据
MyBatis映射文件存放的位置是src/main/resources/mappers目录下
2、MyBatis中可以面向接口操作数据,要保证两个一致:
a>mapper接口的全类名和映射文件的命名空间(namespace)保持一致
b>mapper接口中方法的方法名和映射文件中编写SQL的标签的id属性保持一致
| Java概念 | 数据库概念 |
|---|---|
| 类 | 表 |
| 属性 | 字段/列 |
| 对象 | 记录/行 |

DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mapper.UserMapper"><insert id="insertUser">insert into user values(10,'admin','shiyang')insert>mapper>
7.通过junit测试功能
在test文件夹里创建测试类com.mojito.mybatis.test,在test包下创建test.java类
- SqlSession:代表Java程序和数据库之间的会话。(HttpSession是Java程序和浏览器之间的会话)
- SqlSessionFactory:是“生产”SqlSession的“工厂”。
- 工厂模式:如果创建某一个对象,使用的过程基本固定,那么我们就可以把创建这个对象的相关代码封装到一个“工厂类”中,以后都使用这个工厂类来“生产”我们需要的对象。
public class test1 {/** SqlSession默认不自动提交事务,若需要自动提交事务* 可以使用SqlSessionFactory.openSession(true);* */@Testpublic void testMybatis() throws IOException {//加载核心配置文件String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);//获取sqlSessionFactoryBuilder且获取sqlSessionFactorySqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//获取sqlSession 可实现mybatis的功能 访问sql语句//SqlSession sqlSession = sqlSessionFactory.openSession();SqlSession sqlSession = sqlSessionFactory.openSession(true);//优化为自动提交 设置自动提交参数为true b是autoCommit//获取mapper接口对象 getMapper底层是个代理模式 可以帮助获取接口的一个实现类UserMapper mapper = sqlSession.getMapper(UserMapper.class);//测试功能 过程:从mapper接口-->映射文件xml-->根据方法找到要调用的sql语句int result = mapper.insertUser();//提交事务//sqlSession.commit();System.out.println(result);}}
7.加入log4j日志功能
-
在外层pom.xml中加入依赖
<dependency><groupId>log4jgroupId><artifactId>log4jartifactId><version>1.2.17version>dependency> -
加入log4j的配置文件
log4j的配置文件名为log4j.xml,存放的位置是src/main/resources目录下
DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"><appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"><param name="Encoding" value="UTF-8" /><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m (%F:%L) \n" />layout>appender><logger name="java.sql"><level value="debug" />logger><logger name="org.apache.ibatis"><level value="info" />logger><root><level value="debug" /><appender-ref ref="STDOUT" />root>
log4j:configuration>
8.mybatis的增删改查
**小技巧:**接口文件中写函数接口时alt+回车可利用mybatisX插件在xml映射文件中自动生成sql语句
(1)增
UserMapper接口文件中:
//添加用户int insertUser();
UserMapper.xml映射文件中
<!--int insertUser();--><insert id="insertUser">insert into user values(10,'admin','shiyang')</insert>
test1.java测试文件:
@Testpublic void testMybatis() throws IOException {//加载核心配置文件String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);//获取sqlSessionFactoryBuilder且获取sqlSessionFactorySqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//获取sqlSession 可实现mybatis的功能 访问sql语句//SqlSession sqlSession = sqlSessionFactory.openSession();SqlSession sqlSession = sqlSessionFactory.openSession(true);//优化为自动提交 设置自动提交参数为true b是autoCommit//获取mapper接口对象 getMapper底层是个代理模式 可以帮助获取接口的一个实现类UserMapper mapper = sqlSession.getMapper(UserMapper.class);//测试功能 过程:从mapper接口-->映射文件xml-->根据方法找到要调用的sql语句int result = mapper.insertUser();//提交事务//sqlSession.commit();System.out.println(result);}
(2)删除
UserMapper接口文件中:
//删除用户信息void deleteUser();
UserMapper.xml映射文件中:
<!--void deleteUser();--><delete id="deleteUser">delete from user where id = 10</delete>
test1.java测试文件:(包含了删、改、查,代码只用改注释操作部分)
@Testpublic void testUpdateOrDelete() throws IOException {//加载核心配置文件String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);//获取sqlSessionFactoryBuilder且获取sqlSessionFactorySqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//获取sqlSession 可实现mybatis的功能 访问sql语句//SqlSession sqlSession = sqlSessionFactory.openSession();SqlSession sqlSession = sqlSessionFactory.openSession(true);//优化为自动提交 设置自动提交参数为true b是autoCommit//获取mapper接口对象 getMapper底层是个代理模式 可以帮助获取接口的一个实现类UserMapper mapper = sqlSession.getMapper(UserMapper.class);//修改//mapper.updateUser();//删除//mapper.deleteUser();//查询//方式1:根据id查询 返回类型为实体类/* User user = mapper.getUserById();System.out.println(user);*///方式2:查询所有的用户信息 List集合List<User> list = mapper.getAllUser();list.forEach(System.out::println);}
(3)改
UserMapper接口文件中:
//修改用户void updateUser();
UserMapper.xml映射文件中:
<!--void updateUser();--><update id="updateUser">update user set name = '石阳' where id = 2</update>
test1.java测试文件:见(2)
(4)查
UserMapper接口文件中:
//查询// 方式1:根据id查询 返回类型为实体类User getUserById();// 方式2:查询所有的用户信息 List集合List<User> getAllUser();
UserMapper.xml映射文件中:
<!--User getUserById();--><!--查询功能的标签必须设置->resultType:设置默认的映射关系resultMap:设置自定义的映射关系--><select id="getUserById" resultType="com.mojito.User">select * from user where id = 5</select><!-- List<User> getAllUser();--><select id="getAllUser" resultType="com.mojito.User">select * from user</select>
小结
-
配置完毕之后实现增删改查的编写步骤:
- 先在接口类文件中定义方法
- 再到映射文件中写sql语句,id与方法名一致
- 最后在test文件中进行单元测试()
-
关键点
-
mybatis面向接口编程的两个一致
- 映射文件的namespace要和mapper的全类名保持一致
- 映射文件中sql语句的id要和mapper接口中的方法名一致
-
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
