快速开始
安装
在pom.xml
中添加相关依赖。
<!-- Mysql 依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
<!-- myBatis 依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<!-- lo4j2 日志 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.19.0</version>
</dependency>
<!-- junit 测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.1</version>
<scope>test</scope>
</dependency>
创建核心配置
在resource
下创建mybatis.xml
配置,该配置是mybatis
的核心配置。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"https://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://coderlzw.cn:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- 注册映射文件 -->
<mapper resource="userMapper.xml"/>
</mappers>
</configuration>
添加映射文件
映射文件一般称之为mapper
,主要是在里面编写 SQL 语句。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="test">
<!--parameterType可省略 -->
<select id="selectUser" parameterType="org.example.pojo.User" resultType="org.example.pojo.User">
select * from db_user where id = #{id}
</select>
<select id="selectAllUsers" resultType="org.example.pojo.User">
select * from db_user
</select>
<insert id="insertUser">
INSERT INTO db_user (username, email, age, gender, registration_date)
VALUES (#{username}, #{email}, #{age}, #{gender}, #{registrationDate})
</insert>
<delete id="deleteUser">
DELETE FROM db_user WHERE id = #{id}
</delete>
<update id="updateUser">
UPDATE db_user set username=#{username},age=#{age} where id=#{id}
</update>
</mapper>
id
:该SQL语句的唯一表示,可以用来代替该SQL语句,在Java代码中要使用该标识。parameterType
:传入参数的类型,MyBatis会推断出传入参数的类型,因此可以不做配置。#{}
:里面填写javabean中的属性,其底层通过反射机制,调用bean相关属性的get方法来获取值。resultType
:表示该SQL语句返回的每一条的数据类型。
创建实体类
package org.example.pojo;
import java.sql.Date;
public class User {
private int id;
private String username;
private String email;
private int age;
private String gender;
private Date registrationDate;
// 省略其余部分
}
创建Dao接口和实现类
SqlSessionFactoryBuilder
:作用是创建SqlSessionFactory
,在创建SqlSessionFactory
之后就不再需要SqlSessionFactoryBuilder
了。SqlSessionFactory
:在一个应用中只创建一个SqlSessionFactory
即可,最好保证其是单例的,通过SqlSessionFactory
我们可以创建SqlSession。
SqlSession
:SqlSession
是线程不安全的,在后面跟spring
进行集成之后,可以创建出线程安全的SqlSesion
对象。
package org.example.dao;
import org.example.pojo.User;
import java.util.List;
public interface UserDao {
User selectUser(int id);
Integer insertUser(User user);
List<User> selectAllUsers();
}
在UserDao
的实现类中,我们手动提交事务。如果想要改成自动的话,可以在openSession
方法里面传入true
。默认为false
,即没有任何参数。
测试
import org.example.dao.UserDao;
import org.example.dao.impl.UserDaoImpl;
import org.example.pojo.User;
import org.junit.Test;
import java..Date;
import java.util.List;
public class UserTest {
@Test
public void testSelectUser() {
UserDao userDao = new UserDaoImpl();
User user = userDao.selectUser(1);
System.out.println(user);
}
@Test
public void testInsertUser() {
Date date = new Date();
User user = new User("John 123111", "123@qq.com", 20, "Male", date);
UserDao userDao = new UserDaoImpl();
Integer i = userDao.insertUser(user);
if (i > 0) {
System.out.println("Insert user successfully!");
} else {
System.out.println("Insert user failed!");
}
}
@Test
public void testSelectAllUsers() {
UserDao userDao = new UserDaoImpl();
List<User> users = userDao.selectAllUsers();
for (User user : users) {
System.out.println(user);
}
}
}
最后更新于
这有帮助吗?