使用 Maven 搭建 Mybatis 环境:https://blog.csdn.net/qq_42322548/article/details/89913220
一、创建项目
创建一个 Maven 项目。
1、添加 jar 包依赖。
<dependencies>
<!--mybatis核心包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.1</version>
</dependency>
<!--mysql驱动包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.13</version>
</dependency>
<!--junit测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
<scope>provided</scope>
</dependency>
</dependencies>
2、设置资源文件路径,使 Maven 能编译 resource 文件夹之外的资源文件。
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
3、目录结构。
二、创建实体类
这里使用了 Lombok:https://blog.csdn.net/qq_42322548/article/details/91438451
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private int id;
private String account;
private String password;
private String name;
private int phone;
}
三、添加 JDBC 配置文件
在 resource 文件夹新建 jdbc.properties 配置文件,保存配置相关的信息。
# mysql驱动包名
driver=com.mysql.cj.jdbc.Driver
# 数据库连接地址
url=jdbc:mysql://localhost:3306/demo_1? serverTimezone=GMT &useUnicode=true& characterEncoding=utf8
# 用户名
username=root
# 密码
password=root
四、添加配置 Mybatis
在 resource 文件夹新建 mybatis-config.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>
<!-- 引用 jdbc.properties 配置文件 -->
<properties resource="jdbc.properties"></properties>
<!-- typeAliases 导入实体类包 -->
<typeAliases>
<package name="com.noteligible.pojo"/>
</typeAliases>
<!-- environments 环境配置 -->
<environments default="development">
<environment id="development">
<!-- 使用jdbc事务管理 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 数据库连接池 -->
<!-- 数据库连接相关配置 ,这里动态获取jdbc.properties文件中的内容-->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!-- 加载 mapper 映射文件 -->
<mappers>
<package name="com.noteligible.mapper"></package>
</mappers>
</configuration>
五、创建 sql 映射文件
在 mapper 文件夹新建 UserMapper.xml 文件,并在 Configuration.xml 文件中加载该文件。
编写 mapper.xml(映射文件)和 mapper.java 需要遵循一个开发规范:
- mapper.xml中namespace就是mapper.java的类全路径。
- mapper.xml中statement的id和mapper.java中方法名一致。
- mapper.xml中statement的parameterType指定输入参数的类型和mapper.java的方法输入参数类型一致
- mapper.xml中statement的resultType指定输出结果的类型和mapper.java的方法返回值类型一致。
<?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="com.noteligible.mapper.UserMapper">
<!--增-->
<insert id="insertUser" parameterType="User">
insert into users values (#{id}, #{account}, #{password}, #{name}, #{phone})
</insert>
<!--删-->
<delete id="deleteUser" parameterType="User">
delete from users where id = #{id}
</delete>
<!--改-->
<update id="updateUser" parameterType="User">
update users set account = #{account}, password = #{password}, name = #{name}, phone = #{phone} where id = #{id}
</update>
<!--通过id查找-->
<select id="queryUserById" parameterType="User" resultType="User">
select * from users where id = #{id}
</select>
<!--通过名字模糊查找-->
<select id="queryUserByName" parameterType="String" resultType="User">
select * from users where name like "%"#{value}"%"
</select>
</mapper>
六、创建 UserMapper 接口
在 mapper 文件夹新建 UserMapper 接口,并将 sql 映射文件中的 namespace 改成 UserMapper 接口的地址。
public interface UserMapper {
/**
* 增
* @param user
*/
void insertUser(User user);
/**
* 删
* @param user
*/
void deleteUser(User user);
/**
* 改
* @param user
*/
void updateUser(User user);
/**
* 通过id查找
* @param user
* @return
*/
User queryUserById(User user);
/**
* 通过名字模糊查找
* @param name
* @return
*/
List<User> queryUserByName(String name);
}
七、编写测试类
在 test 文件夹 新建 junit 测试类。
public class test {
private SqlSessionFactory sqlSessionFactory = null;
@Before
public void init() throws Exception{
// 创建SqlSessionFactoryBuilder对象
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
// 加载mybaits-config.xml配置文件
InputStream inputStream = Resources.getResourceAsStream("mybaits-config.xml");
// 创建SqlsessionFactory
this.sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
}
@Test
public void testInsert(){
// 获取sqlSession,和spring整合后由spring管理
SqlSession sqlSession = this.sqlSessionFactory.openSession();
// 从sqlSession中获取Mapper接口的代理对象
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = new User(1, "123", "abc", "张三", 110);
userMapper.insertUser(user);
// 和spring整合后由spring管理
sqlSession.commit();
sqlSession.close();
}
@Test
public void testDelete(){
SqlSession sqlSession = this.sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
userMapper.deleteUser(1);
sqlSession.commit();
sqlSession.close();
}
@Test
public void testQueryUserById(){
SqlSession sqlSession = this.sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = new User();
user.setId(1);
User userResult = userMapper.queryUserById(user);
System.out.println(userResult);
}
@Test
public void testQueryUserByName(){
SqlSession sqlSession = this.sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
List<User> userList = userMapper.queryUserByName("张");
System.out.println(userList);
}
}