Maven+Mybatis实现数据库增删改查
Posted Panda_cv
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Maven+Mybatis实现数据库增删改查相关的知识,希望对你有一定的参考价值。
Maven+Mybatis实现数据库增删改查
1. 新建一个普通的Maven项目,在pom.xml导入maven依赖。
<!--导入依赖-->
<dependencies>
<!-- 1. mysql驱动 2.mybatis 3.junit -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
2. 创建一个模块 在mybatis-config.xml编写mybatis的核心配置文件
<!--mybatis核心配置文件-->
<configuration>
<!-- <properties resource="jdbc.properties"></properties>-->
<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/manage_system?characterEncoding=UTF-8&serverTimezone=GMT%2b8"/>
<property name="username" value="root"/>
<property name="password" value="520myself1996"/>
</dataSource>
</environment>
</environments>
<!--每一个mapper.xml 都需要在Mybatis核心配置文件中注册-->
<mappers>
<mapper resource="dao/UserMapper.xml"/>
</mappers>
</configuration>
3. 编写mybatis工具类
创建工具类 从 XML 中构建 SqlSessionFactory(固定写法)(SqlSessionFactory -> sqlSession 把资源加载进来,并创建可执行sql的对象) 。关键点: 从"mybatis-config.xml"中构建SqlSessionFactory。
public class MybatisUtils {
//提升作用域
private static SqlSessionFactory sqlSessionFactory;
static {
String resource = "mybatis-config.xml";
try {
// 使用Mybatis的第一步: 获取SqlSessionFactory对象
InputStream inputStream = Resources.getResourceAsStream(resource);
// SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}catch (IOException e){
e.printStackTrace();
}
}
//既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。
// SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。
// 你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句
public static SqlSession getSqlSession(){
SqlSession sqlSession = sqlSessionFactory.openSession();
return sqlSession;
}
}
4. 编写代码:实体类
public class User {
private String user_id;
private String user_name;
private String password;
private String create_time;
public String getUser_id() {
return user_id;
}
public void setUser_id(String user_id) {
this.user_id = user_id;
}
public void setUser_name(String user_name) {
this.user_name = user_name;
}
public String getUser_name() {
return user_name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getCreate_time() {
return create_time;
}
public void setCreate_time(String create_time) {
this.create_time = create_time;
}
@Override
public String toString() {
return "User{" +
"user_id='" + user_id + '\\'' +
", user_name='" + user_name + '\\'' +
", password='" + password + '\\'' +
", create_time='" + create_time + '\\'' +
'}';
}
public User() { }
public User(String user_id, String user_name, String password, String create_time) {
this.user_id = user_id;
this.user_name = user_name;
this.password = password;
this.create_time = create_time;
}
}
5. 编写代码:dao接口
package dao;
import entity.User;
import java.util.List;
public interface UserDao {
List<User> getUserList();
}
6. 编写代码:接口实现类
以前在接口实现类写JDBC一些操作数据集库的代码,现在可以建一个UserMapper.xml在xml写sql语句。
<!--namespace = 绑定一个对应的Dao/Mapper接口-->
<!--接口实现类由原来的接口实现类UserDaoImpl转变一个Mapper配置文件-->
<mapper namespace="dao.UserDao">
<select id="getUserList" resultType="entity.User">
select * from manage_system.user
</select>
</mapper>
7. 测试(junit测试)
在test目录下绿色java下新建与main一样的dao的目录(推荐)
package dao;
import entity.User;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import utils.MybatisUtils;
import java.util.List;
public class UserDaoTest {
@Test
public void test(){
//第一步:获取SqlSession对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
// 执行sql语句
UserDao userDao = sqlSession.getMapper(UserDao.class);
List<User> userList = userDao.getUserList();
for (User user : userList) {
System.out.println(user);
}
//关闭SqlSession;
sqlSession.close();
}
}
8.注意事项:
8.1 运行报错:Type interface dao.UserDao is not known to the MapperRegister
在第二步Mybatis核心配置文件中。
<!--每一个mapper.xml 都需要在Mybatis核心配置文件中注册-->
<mappers>
<mapper resource="dao/UserMapper.xml"/>
</mappers>
8.2 运行报错:The error may exit in dao/UserMapper.xml
(资源过滤问题) target生成目录中没有这个xml文件.
maven由于约定大于配置,我们之后可能遇到我们自己写的配置文件,无法被导出或者生效问题,默认配置资源放在resource下,现在我们却放在java
目录下。解决方案:在pom.xml中增加:
<build>
<resources>
<resource>
<directory>src/main/java/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
9.运行结果:
以上是关于Maven+Mybatis实现数据库增删改查的主要内容,如果未能解决你的问题,请参考以下文章