Eclipse下的maven配置以及maven+Mybatis的使用(超详细搭建)

Eclipse下的maven配置以及maven+Mybatis的使用


前言

今天简单写一下maven的入门配置以及基于maven下配合Mybatis搭建简单项目


一、Eclipse下maven的配置

1.首先创建两个文件夹maven-workspace以及maven-repository
f1
2.打开eclipse并选择workspace(这里选刚才建好的maven-workspace)

f2
3.设置字符格式为utf-8(一般设置workspace与jsp的格式为utf-8)f3
f4
f5
4.选择javaee创建maven项目
f6
fx
usersetting选择自己下载的maven包下的conf文件下的setting.xml文件。
local repository(本地仓)选择第一步创建的maven-repository。

f7
f8
f9
选择create a simple project(原来默认的是use default workspace location),location选择刚才创建的maven-workspace,然后在底下新建新的项目mybatis-demo(名字可以自己取)
f10
Group Id取com.企业名.项目名,Artifact Id取上一步的mybatis-demo,packaging选择jar(war为ee项目,jar为se项目)
f11
创建完成后里面的内容如上图所示,第一项放置java代码,第二项放置配置的资源文件(xml,properties),第三项是测试代码的地方,可用来检查测试在第一项写好的代码。(ps:如果又遇到出现无法创建Maven项目的情况,可以在settings.xml更换镜像库,建议用阿里的镜像库,或者可以直接将他人比较完善的maven-repository拷贝下来作为自己的本地仓库)

二、Maven+Mybatis的使用

1.maven通过pom.xml文件注入依赖的方式来代替引入jar包

  <dependencies>
  	<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java(数据库包) -->
	<dependency>
    	<groupId>mysql</groupId>
    	<artifactId>mysql-connector-java</artifactId>
    	<version>8.0.23</version>
	</dependency>
	<!-- https://mvnrepository.com/artifact/com.alibaba/druid(数据库连接池包) -->
	<dependency>
    	<groupId>com.alibaba</groupId>
    	<artifactId>druid</artifactId>
    	<version>1.2.4</version>
	</dependency>
	<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis(Mybatis包) -->
	<dependency>
    	<groupId>org.mybatis</groupId>
    	<artifactId>mybatis</artifactId>
    	<version>3.5.6</version>
	</dependency>
	<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok(lombok包) -->
		<dependency>
    		<groupId>org.projectlombok</groupId>
    		<artifactId>lombok</artifactId>
    		<version>1.18.16</version>
    		<scope>provided</scope>
		</dependency>
  	
  	<!-- https://mvnrepository.com/artifact/junit/junit(java测试包) -->
	<dependency>
    	<groupId>junit</groupId>
    	<artifactId>junit</artifactId>
    	<version>4.12</version>
    	<scope>test</scope>
	</dependency>
  	
  	<!-- https://mvnrepository.com/artifact/log4j/log4j(日志包) -->
	<dependency>
    	<groupId>log4j</groupId>
    	<artifactId>log4j</artifactId>
    	<version>1.2.17</version>
	</dependency>
  	
  	
  </dependencies>

2.在数据库中创建表(car_tab)
f12
3.在项目中创建Car实体类

package com.dyit.mybatis.entity;

import java.util.Date;

import org.apache.ibatis.type.Alias;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Alias("Car")//定义别名:com.dyit.mybatis.entity.Car=Car
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Car {
	private int id;
	private String name;
	private String createby;
	private Date createtime;
}

5.配置Mybatis所需要的xml和properties文件如下图所示
f14
(1).先配置druid.properties文件(连接数据库所用)

druid.url=jdbc:mysql://这里填自己的IP地址:3306/eimp_db?useUnicode=true&serverTimezone=Asia/Shanghai&useSSL=true
druid.username=填你的用户名
druid.password=填你的密码

(2).编写实体类

package com.dyit.mybatis.entity;

import java.util.Date;

import org.apache.ibatis.type.Alias;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Alias("Car")//定义别名:com.dyit.mybatis.entity.Car=Car与configuration配置中的<typeAliases>标签配合使用,是一种扫描包的方式
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Car {
	private int id;
	private String name;
	private Double price;
	private String createby;
	private Date createtime;
}

(3).配置mybatis-configuration.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>
	<!--数据库的配置信息:url,username,password,driverClassName-->
	<properties resource="config/druid.properties"/>
	<typeAliases>
		<package name="com.dyit.mybatis.entity"/>
	</typeAliases>
	<!--数据库的配置信息-->
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" /><!--JDBC事务管理-->
			<dataSource type="com.dyit.mybatis.util.MybatisDataSource" > <!---数据源(Mybatis的数据源需要换阿里的数据源(type中为替换的数据源路径))-->
				<property name="url" value="${druid.url}" />
				<property name="username" value="${druid.username}" />
				<property name="password" value="${druid.password}" />
			</dataSource>
		</environment>
	</environments>

	<!--配置表和类的映射文件-->
	<mappers>
		<mapper resource="mapper/Car.mapper.xml" />
	</mappers> 
</configuration>

111

ps:以下是替换的数据源内容

package com.dyit.mybatis.util;

import org.apache.ibatis.datasource.unpooled.UnpooledDataSourceFactory;

import com.alibaba.druid.pool.DruidDataSource;

/**
 * 自定义阿里数据源替代mybatis数据源
 * @author Lenovo
 *
 */
public class MybatisDataSource extends UnpooledDataSourceFactory {
	public MybatisDataSource() {
		this.dataSource = new DruidDataSource();
	}

}

112
(4).创建ICarMapper接口与下面要创建的Car.mapper.xml产生映射

(5).配置Car.mapper.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="com.dyit.mybatis.mapper.ICarMapper" >

	<!-- 定义映射规则 --><!--property属性对应实体类属性,column属性对应数据库的表属性-->
	<resultMap type="Car" id="carMap"><!--type对应实体类中@Alias("Car")-->
		<id property="id" column="car_id"/>
		<result property="name" column="car_name"/>
		<result property="price" column="car_price"/>
		<result property="createby" column="car_createby"/>
		<result property="createtime" column="car_createtime"/>
	</resultMap>
	
	<!--insert标签会通过映射由Mybatis自己实现ICarMapper接口中的方法-->
	<insert id="save">
		INSERT INTO car_tab(car_name,car_price,car_createby,car_createtime) 
		VALUES(#{name},#{price},#{createby},#{createtime})
	</insert>
	
	<delete id="deleteById">
		DELETE FROM car_tab WHERE car_id = #{id}
	</delete>
	
	<update id="update">
		UPDATE car_tab SET car_name = #{name},
			car_price = #{price},car_createby = #{createby},car_createtime = #{createtime} 
			WHERE car_id = #{id}
	</update>
	
	<select id="findAll" resultMap="carMap">
		SELECT * FROM car_tab
	</select>
	
</mapper>

(6).下面会创造一个管理Mybatis的工具,代码下面有为何创造该工具的原因。

package com.dyit.mybatis.util;

import java.io.IOException;
import java.util.concurrent.locks.ReentrantLock;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MybatisUtil {
	private SqlSessionFactory sqlSessionFactory;
	private static final ReentrantLock lock = new ReentrantLock();
	
	private static MybatisUtil instance;
	
	private MybatisUtil() {
		try {
			sqlSessionFactory 
			= new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("mybatis-configuration.xml"));
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	public static MybatisUtil getInstance() {
		lock.lock();
		try {
			if(instance == null) {
				instance = new MybatisUtil();
			}
		}finally {
			lock.unlock();
		}
		return instance;
	}
	
	public SqlSession getSqlSession() {
		return sqlSessionFactory.openSession();
	}
}

该工具其实是封装了操纵Mybatis的重复步骤,减少代码冗余,同时使用懒汉式单例模式以及线程锁的方式增强运行时的安全性。
SqlSession:使用 MyBatis 的主要 Java 接口就是 SqlSession。你可以通过这个接口来执行命令,获取映射器示例和管理事务。
SqlSessionFactory:创建 SqlSession 实例。
SqlSessionFactoryBuilder:创建一个 SqlSessionFactory 实例。
至此关于Mybatis所需要的准备已经创建完毕,接下来写个测试类来测试一下构建好的Mybatis


三、测试

编写一个测试类CarTest
f15
f16

package com.dyit.mybatis.test;

import static org.junit.Assert.*;

import java.util.Date;
import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import com.dyit.mybatis.entity.Car;
import com.dyit.mybatis.mapper.ICarMapper;
import com.dyit.mybatis.util.MybatisUtil;

public class CarTest {

	private SqlSession sqlSession = MybatisUtil.getInstance().getSqlSession();
	@Test//测试添加
	public void test() {
		ICarMapper mapper = sqlSession.getMapper(ICarMapper.class);
		Car car = new Car();
		car.setName("奔驰");
		car.setPrice(500000.00);
		car.setCreateby("manager");
		car.setCreatetime(new Date());
		mapper.save(car);
		sqlSession.commit();
		sqlSession.close();
	}
	
	@Test//测试查询
	public void testFindAll() {
		sqlSession = MybatisUtil.getInstance().getSqlSession();
		ICarMapper mapper = sqlSession.getMapper(ICarMapper.class);
		List<Car> list = mapper.findAll();
		System.out.println(list);
		sqlSession.commit();
		sqlSession.close();
	}
	
	@Test//测试更改
	public void testUpdate() {
		sqlSession = MybatisUtil.getInstance().getSqlSession();
		ICarMapper mapper = sqlSession.getMapper(ICarMapper.class);
		Car car = new Car();
		car.setId(1);
		car.setName("奔驰");
		car.setPrice(550000.50);
		car.setCreateby("manager");
		car.setCreatetime(new Date());
		mapper.update(car);
		sqlSession.commit();
		sqlSession.close();
	}
	@Test//测试删除
	public void testDel() {
		sqlSession = MybatisUtil.getInstance().getSqlSession();
		ICarMapper mapper = sqlSession.getMapper(ICarMapper.class);
		mapper.deleteById(1);
		sqlSession.commit();
		sqlSession.close();
	}

}

结果如下图所示:
添加:
f17
更改:
f18
删除:
f19
至此关于maven与Mybatis的简单应用就全部完成了,如有疑问欢迎评论区讨论留言。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值