基于Maven,MyBatis,MySQL的IDEA开发Java项目
- 前言
- MySQL
- Maven
-
- 1.Maven环境配置
- 2.Maven仓库配置
- 3. IDEA下Maven配置
- 4.如何用Maven导入各种jar包
- MyBatis
-
- 1.进行mybatis核心配置
- 2.创建mybatis核心工具类
- 编写测试代码
-
- 创建实体类
- 创建dao层
- 创建测试类
前言
本专栏是在MySQL数据库下,基于Maven项目管理工具,用MyBatis取代JDBC繁琐化操作,在IDEA编辑器下进行Java项目开发
MySQL
MySQL就是一个数据库,类似于微软的SQL Sever数据库服务。
对于MySQL的安装基本操作可以查看其他相关资源,这里放出本人之前写的MySQL基本命令行语法,之后的操作需要用到的时候可以进行查看。
请点击
MySQL命令行基本语法
用MySQL命令行创建一个数据库表,内容如下
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL1cGRNRTRU5kMRpHW3BjMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL2IzNxMzN1QTMxEzNwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
Maven
Maven就是一个Java项目管理工具,之前使用eclipse编写代码时,需要繁琐的导入jar包,而Maven可以通过依赖集,自动下载jar包,只需要知道相关的你需要使用到的jar包即可。
1.Maven环境配置
Maven下载成功后,首先需要配置Maven相关环境变量,可自行百度百科.
2.Maven仓库配置
需要建一个本地仓库,里面用来存放Maven下载的各种jar包;
Maven文件夹下找到设置的XML,在里面的本地仓库路径文件填写你创建的本地仓库文件夹
3. IDEA下Maven配置
在IDEA设置里面,选择Maven版本,使用之前设置好的settings.xml,选择你创建好的本地仓库文件夹
4.如何用Maven导入各种jar包
1.创建你自己的基于maven的Java项目,注意组织名的编写规范
2.找到你自己已经创建好的基于maven的Java项目,在pom.xml下进行相关操作。
xml就是一个语言,不做任何事情,就是用来传输,存储数据![]()
基于Maven,MyBatis,MySQL的IDEA开发Java项目前言MySQLMavenMyBatis编写测试代码
创建一个dependencies集,下面就可以写很多dependency,导入各种jar包,这里我们看到,导入了一个mybatis的依赖,用来简化数据库操作,还有mysql的连接驱动用来连接数据库,以及Junit测试。
如果你需要导入什么包,只需要进入https://www.mvnrepository.com/.
进行查找就行,找个下载最多的
<dependencies>
<!---mybatis的依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<!---mysql连接驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!---单元测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
之后在右侧选择maven,刷新一下,进行相关下载。
到这里,我们关于Maven的基本配置已经设置成功
MyBatis
MyBatis 是一款优秀的持久层框架。
它支持自定义 SQL、存储过程以及高级映射。
MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。
MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
什么是持久层???
Java中有Dao层(持久层),Service层(业务逻辑实现),Controller层(只负责接收用户请求并返回响应数据)
DAO层:
DAO层叫数据访问层,全称为data access object,属于一种比较底层,比较基础的操作,具体到对于某个表的增删改查,也就是说某个DAO一定是和数据库的某一张表一一对应的,其中封装了增删改查基本操作,建议DAO只做原子操作,增删改查。
Service层:
Service层叫服务层,被称为服务,粗略的理解就是对一个或多个DAO进行的再次封装,封装成一个服务,所以这里也就不会是一个原子操作了,需要事物控制。
Controler层:
Controler负责请求转发,接受页面过来的参数,传给Service处理,接到返回值,再传给页面。
1.进行mybatis核心配置
在resources下新建一个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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/ii?useSSL=false&useUnicode=true&characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="edu/hqu/mybatis/dao/UserMapper.xml"/>
</mappers>
</configuration>
我们这里要更改你想要连接的数据库以及你之前mysql创建的账号和密码
<property name="url" value="jdbc:mysql://localhost:3306/ii?useSSL=false&useUnicode=true&characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
<mappers>
<mapper resource="edu/hqu/mybatis/dao/UserMapper.xml"/>
</mappers>
1.就是这里的ii改成别的你想要的数据库名,以及下面的username和password都改成你的账户密码,一般系统管理员都是root
2.mapper要和自己创建的mapper相关联
mybatis的核心配置完成以后就可以和数据库连接了
2.创建mybatis核心工具类
package edu.hqu.mybatis.utils;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class MybatisUtil {
private static SqlSessionFactory sqlSessionFactory;
// 获取sqlSession的工厂
static {
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}catch (IOException e){
e.printStackTrace();
}
}
//既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。
// SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
}
}
需要拿到sqlSessionFactory,才能生产出执行sql的sqlSession
sqlSessionFactory是通过resources去读取配置文件加载成流,
然后在通过sqlSessionFactoryBuilder加载这个流然后构建成工厂
每次都去获取比较麻烦,所以我们一般封装成一个工具类
简而言之,在mybatis核心工具类里,首先要有sqlSessionFactory,之后要有sqlSession,在sqlSession里可以有SQL命令
编写测试代码
创建实体类
package edu.hqu.mybatis.pojo;
public class User {
private int uid;
private String uname;
private String upassword;
public User(int uid, String uname, String upassword) {
this.uid = uid;
this.uname = uname;
this.upassword = upassword;
}
public User() {
}
@Override
public String toString() {
return "User{" +
"uid=" + uid +
", uname='" + uname + '\'' +
", upassword='" + upassword + '\'' +
'}';
}
public int getUid() {
return uid;
}
public String getUname() {
return uname;
}
public String getUpassword() {
return upassword;
}
public void setUid(int uid) {
this.uid = uid;
}
public void setUname(String uname) {
this.uname = uname;
}
public void setUpassword(String upassword) {
this.upassword = upassword;
}
}
这里的实体类最好与数据库的相关属性一一对应
创建dao层
dao层里面写两个,一个是UserMapper接口,一个是UserMapper.xml,实际上就是xml里面写SQL语句,接口用来调用xml
具体相关代码如下
<?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="edu.hqu.mybatis.dao.UserMapper">
<!--绑定一个对应的mapper接口,我们这里与UserMapper关联-->
<!--全限定名-->
<!--确定绝对路径-->
<select id="getAllUsers" resultType="edu.hqu.mybatis.pojo.User">
select * from user
</select>
<select id="getUserById" parameterType="int" resultType="edu.hqu.mybatis.pojo.User">
select * from user where uid=#{uid}
</select>
</mapper>
package edu.hqu.mybatis.dao;
import edu.hqu.mybatis.pojo.User;
import java.util.List;
public interface UserMapper {
List<User> getAllUsers();
User getUserById(int uid);
}
parameterType="int"表示SQL语句是有参的,无参就不用加,
resultType="edu.hqu.mybatis.pojo.User"是指你的实体类返回类型在哪
List getAllUsers();表示返回结果是泛型,因为是alluser,都是user类型
User getUserById(int uid);表示有参返回user类型
创建测试类
package edu.hqu.mybatis.dao;
import edu.hqu.mybatis.pojo.User;
import edu.hqu.mybatis.utils.MybatisUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;
public class UserMapperTest {
@Test
public void testGetAllUsers() {
SqlSession sqlSession = MybatisUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> allUsers = mapper.getAllUsers();
for (User allUser : allUsers) {
System.out.println(allUser);
}
}
@Test
public void testGetUserById(){
SqlSession sqlSession = MybatisUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User userById = mapper.getUserById(2);
System.out.println(userById);
}
}
我们创建两个测试类,用来分别测试之前写的GetAllUsers方法和GetUserById方法
**SqlSession sqlSession = MybatisUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);**就是生成一个sqlSession和UserMapper相互关联,这两句在测试时候都要写。
之后是具体的测试方法实现,
List allUsers = mapper.getAllUsers();
for (User allUser : allUsers) {
System.out.println(allUser);
}
User userById = mapper.getUserById(2);
System.out.println(userById);