源码:Mybatis学习源码
数据库设计
MyBitas是对数据库进行操作的,所以首先设计一个想要操作的数据库表
在表里插入一下数据
创建项目
创建一个Maven项目,主要是可以快速导包。
在pom.xml中加入下面的内容,导入mysql驱动和与Mybatis相关的包
<!--导入依赖-->
<dependencies>
<!--mysqlq驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.12</version>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.4</version>
</dependency>
</dependencies>
创建实体类
对于表创建一个对应的实体类,类中的属性和表中的属性对应
package org.zhang;
/**
* @title: User
* @Author 张宜强
* @Date: 2020/12/29 15:33
* @Effect: User实体类
*/
public class User {
private String name;
private String id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", id='" + id + '\'' +
'}';
}
}
编写Mapper
接下来就是编写接口,想要对表进行怎样的操作,这里先举例一个按照id来查找用户,返回类型是一个User用户。
package org.mapper;
import org.zhang.User;
public interface UserMapper {
public User findById(String id);
}
配置mybatis-config
在resources下创建一个mybatis_config.xml
,用于配置mybatis的相关事项。
environments
下可以存在多个environment
,每个environment
都是一个环境;
default
后面加你想要的环境的id
四个property
中分别是driver
,url
,username
,password
,对应数据库驱动,url,数据库用户名,密码。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//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"/>
<!-- 数据库连接相关配置 ,这里动态获取config.properties文件中的内容-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&useSSL=false" />
<property name="username" value="root" />
<property name="password" value="123456" />
</dataSource>
</environment>
</environments>
</configuration>
编写mapper
在这个xml文件中写上与UserMapper.java
接口中对应的接口语句。
首先namespace="org.mapper.UserMapper"
中的namespace
的值是你的包下对应的UserMapper
接口。
select
代表这个是一条查询语句;
id
为方法名,对应接口中的public User findById(String id);
的方法名;
parameterType
代表传入数据类型,对应String id
;
resultType
代表返回值类型,注意些全限定类名;
之后就是sql语句了
select * from user where id = #{id}
#{id}就是传入的id
<?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="org.mapper.UserMapper">
<!--id ="接口中的方法名"
parameterType="传入的参数类型"
resultType = "返回实体类对象,使用包.类名"-->
<select id="findById" parameterType="String" resultType="org.zhang.User">
select * from user where id = #{id}
</select>
</mapper>
配置mapper
最后在mybatis-config.xml里面加上mapper的配置,resourse
中为UserMapper.xml
的文件路径。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//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"/>
<!-- 数据库连接相关配置 ,这里动态获取config.properties文件中的内容-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&useSSL=false" />
<property name="username" value="root" />
<property name="password" value="123456" />
</dataSource>
</environment>
</environments>
<!-- mapping文件路径配置 -->
<mappers>
<mapper resource="mapper/UserMapper.xml" />
</mappers>
</configuration>
编写Main方法
从Mybatis官网上可以看到用以下三行代码创建一个SqlSessionFactory
对象
之后获取对象
根据这些我们可以编写出方法
public static void userFindByIdTest(){
String resource = "mybatis-config.xml";
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
e.printStackTrace();
}
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
UserMapper userMapper = sqlSessionFactory.openSession().getMapper(UserMapper.class);
User user = userMapper.findById("1");
System.out.println(user);
}
之后在Main方法中调用userFindByIdTest
方法,运行成功:
实现增删改查
在上面的步骤都成功后,就可以用Mybatis实现数据库的增删改查
UserMapper.java
package org.mapper;
import org.zhang.User;
import java.util.List;
public interface UserMapper {
public User findById(String id);
public List<User> findAllUser();
public void updateUserById(User user);
public void insertUser(User user);
public void deleteUserById(String id);
}
UserMapper.xml
<select id="findById" parameterType="String" resultType="org.zhang.User">
select * from user where id = #{id}
</select>
<select id="findAllUser" resultType="org.zhang.User">
select * from user
</select>
<insert id="insertUser" parameterType="org.zhang.User" >
insert into user values (#{id}, #{name})
</insert>
<update id="updateUserById" parameterType="String">
update user set name = #{name} where id = #{id}
</update>
<delete id="deleteUserById" parameterType="String">
delete from user where id = #{id}
</delete>