IDEA中使用Maven搭建MyBatis框架

1、准备好数据库表
2、创建一个maven项目
2.1、选中点击next

image-20211120114855324

2.2、根据提示输入

image-20211120115807231

2.3、选择本地的maven,选择maven得配置文件路径及本地maven仓库路径,选择完成后点击【Next】
2.4、点击finsh完成项目的创建
3、配置pop.xml文件
3.1、在pom.xml文件中找到 properties结束标签,在下一行添加所需要的依赖,如下:
3.1.1、配置 JDK 版本和编码方式 编码方式为 UTF-8, JDK 版本为 1.8
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
3.1.2、添加 mybatis 依赖
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.0</version>
    </dependency>
3.1.3、添加数据库驱动依赖
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.17</version>
    </dependency>
3.1.4、 添加日志依赖
<!-- 日志jar包 -->
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>
3.1.5、设置资源文件路径

Maven 中默认是只会打包 resource下的资源文件。如果我们的文件不放在resource, 则需要通过配置告知Maven。放在build里面

<!--   **.xml写在src找不到问题解决方案     -->
    <resources>
      <resource>
        <!-- directory:指定资源文件的位置 -->
        <directory>src/main/java</directory>
        <includes>
          <!-- “**” 表示任意级目录    “*”表示任意任意文件 -->
          <!-- mvn resources:resources :对资源做出处理,先于compile阶段  -->
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
        <!--  filtering:开启过滤,用指定的参数替换directory下的文件中的参数(eg. ${name}) -->
        <filtering>false</filtering>
      </resource>
      <resource>
        <directory>src/main/resources</directory>
      </resource>
    </resources>
3.2、导入依赖
3.2.1点击右侧的maven点击刷新按钮

image-20211120233022113

3.2.2、添加成功,在libraries出现相关包

image-20211120233403639

4、导入resources文件夹
4.1、在main下创建

image-20211120234129479

image-20211120234359701

4.2、在test目录下也是同样的操作
5、添加target文件 target是所有的输出文件,编译后的.class文件

image-20211120235159170

6、在main下面的resources里面添加配置文件

image-20211120235436305

6.1、配置mybatis的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>
  <properties resource="mysqldata.properties"/>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="com/my/mapper/GoodsMapper.xml"/>
    
  </mappers>
</configuration>
6.2、配置mysql
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/eshop?serverTimezone=UTC
username=root
password=123456
6.3、配置日志文件
log4j.rootLogger=debug,stdout,file        
#\u5C06\u65E5\u5FD7\u8F93\u51FA\u5230\u63A7\u5236\u53F0
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

#\u8BBE\u7F6E\u8F93\u51FA\u65E5\u5FD7\u6587\u4EF6\u7F16\u7801\uFF08\u53EF\u4EE5\u63A7\u5236\u4E71\u7801\u60C5\u51B5\uFF09\u8F93\u51FA\u5230\u6587\u4EF6
log4j.appender.file.encoding=UTF-8
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=1024
log4j.appender.file.File=D\:/log4j/log4j.html
log4j.appender.file.layout=org.apache.log4j.HTMLLayout
log4j.appender.file.layout.ConversionPattern=[%p][%d{yyyy-MM-dd HH\:mm\:ss,SSS}][%c]%m%n
#%d{yyyy-MM-dd HH\:mm\:ss} [%c]-[%-5p] %m%n%n

7、创建实体类和Mapper接口、mapper.xml文件
7.1、创建实体类
package com.my.pojo;

import java.util.Date;

public class Goods {
	  private Integer id;
	  //#商品名称
	  private String goodsname;
	  //#商品定价
	  private Double price;
	  //#商品描述
	  private String memo;
	  // #商品图片
	  private String pic;
	  // #生产日期
	  private Date createtime;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getGoodsname() {
		return goodsname;
	}
	public void setGoodsname(String goodsname) {
		this.goodsname = goodsname;
	}
	public Double getPrice() {
		return price;
	}
	public void setPrice(Double price) {
		this.price = price;
	}
	public String getMemo() {
		return memo;
	}
	public void setMemo(String memo) {
		this.memo = memo;
	}
	public String getPic() {
		return pic;
	}
	public void setPic(String pic) {
		this.pic = pic;
	}
	public Date getCreatetime() {
		return createtime;
	}
	public void setCreatetime(Date createtime) {
		this.createtime = createtime;
	}
	@Override
	public String toString() {
		return "Goods [id=" + id + ", goodsname=" + goodsname + ", price=" + price + ", memo=" + memo + ", pic=" + pic
				+ ", createtime=" + createtime + "]";
	}
}
7.2、创建Mapper接口 GoodsMapper.java
//添加包名
import java.util.List;
import com.my.pojo.Goods
public interface GoodsMapper {
	public Goods selectGoods(int id);
	//查询所有信息
	public List<Goods> findAll();
	//模糊查询
	public List<Goods> findByGname(String gname);
	//增加数据
	public int addGoods(Goods goods);
	//修改数据
	public int updateGoods(Goods goods);
	//删除数据
	public int delGoods(int id);
}

7.3、创建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.my.mapper.GoodsMapper">
  <select id="selectGoods" parameterType="int" resultType="com.my.pojo.Goods">
    select * from goods where id = #{id}
  </select>
  
  <select id="findAll" resultType="com.my.pojo.Goods">
    select * from goods
  </select>
  <select id="findByGname" parameterType="java.lang.String" resultType="com.my.pojo.Goods">
  	<!-- select * from goods where goodsname like '%${value}%' -->
  	select * from goods where goodsname like "%"#{gname}"%"
  </select>
  <insert id="addGoods" parameterType="com.my.pojo.Goods">
  	<selectKey order="AFTER" keyProperty="id" resultType="java.lang.Integer">
  		select last_insert_id()
  	</selectKey>
  		insert into goods(id,goodsname,price,memo,pic,createtime) values(#{id},#{goodsname},#{price},#{memo},#{pic},#{createtime})
  </insert>
  
  <update id="updateGoods" parameterType="com.my.pojo.Goods" >
  	update goods set goodsname=#{goodsname},price=#{price},memo=#{memo},pic=#{pic},createtime=#{createtime} where id=#{id}
  </update>
  
  <delete id="delGoods" parameterType="int" >
  	delete from goods where id=#{id}
  </delete>

</mapper>
8、创建测试类
package com.my.test;

import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.List;

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 org.junit.Before;
import org.junit.Test;

import com.my.mapper.GoodsMapper;
import com.my.pojo.Goods;

public class GoodsMapperTest {
   
   private SqlSessionFactory  sqlSessionFactory= null;
   @Before
   public void setUp() {
      try {
         InputStream config = Resources.getResourceAsStream("SqlMapConfig.xml");
         //创建会话工厂 传入mybatis的配置参数
         sqlSessionFactory = new SqlSessionFactoryBuilder().build(config);
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
   @Test
   public void selectid() {
      SqlSession sqlSession= sqlSessionFactory.openSession();
      //创建dao mybatis自动生成GoodsMapper代理对象(dao的实现类)
      GoodsMapper mapper = sqlSession.getMapper(GoodsMapper.class);
      //调用的方法,映射Mapped Statement ID
      Goods g= mapper.selectGoods(6);
      System.out.println(g);
   }
   
   //查询全部信息
   @Test 
   public void findall() {
      SqlSession sqlSession= sqlSessionFactory.openSession();
      GoodsMapper mapper = sqlSession.getMapper(GoodsMapper.class);
      List<Goods> list=mapper.findAll();
      System.out.println(list);
   }
   
   //模糊查询
   @Test
   public void findByGname() {
      SqlSession sqlSession= sqlSessionFactory.openSession();
      GoodsMapper mapper = sqlSession.getMapper(GoodsMapper.class);
      List<Goods> list=mapper.findByGname("油");
      System.out.println(list);
   }
   
   //增加数据
   @Test
   public void add() {
      SqlSession sqlSession= sqlSessionFactory.openSession();
      GoodsMapper mapper = sqlSession.getMapper(GoodsMapper.class);
      Goods goods=new Goods();
      goods.setGoodsname("秦安苹果");
      goods.setPrice(22.9);
      goods.setMemo("秦安");
      goods.setPic("a.jpg");
      goods.setCreatetime(new Date());
      int row=mapper.addGoods(goods);
      sqlSession.commit();
      System.out.println(row);
   }
   //修改数据
   @Test
   public void update() {
      SqlSession sqlSession= sqlSessionFactory.openSession();
      GoodsMapper mapper = sqlSession.getMapper(GoodsMapper.class);
      Goods goods=new Goods();
      goods.setGoodsname("花牛苹果");
      goods.setPrice(22.9);
      goods.setMemo("安");
      goods.setPic("a.jpg");
      goods.setCreatetime(new Date());
      goods.setId(8);
      int row=mapper.updateGoods(goods);
      sqlSession.commit();
      System.out.println(row);
   }
   //删除数据
   @Test
   public void del() {
      SqlSession sqlSession= sqlSessionFactory.openSession();
      GoodsMapper mapper = sqlSession.getMapper(GoodsMapper.class);
      mapper.delGoods(8);
      sqlSession.commit();
   }
}
9、选中查询全部信息运行测试类

image-20211121001928699

10、解决数据库连接

image-20211120104811387

解决办法

image-20211120104850253

image-20211120104729815

这个解决办法,连接数据库

image-20211121002555560

image-20211120104953534

这个解决

image-20211120110255522

最后执行这个,导入数据表

image-20211120110140329

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值