IDEA中使用Maven搭建MyBatis框架
1、准备好数据库表
2、创建一个maven项目
2.1、选中点击next
2.2、根据提示输入
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点击刷新按钮
3.2.2、添加成功,在libraries出现相关包
4、导入resources文件夹
4.1、在main下创建
4.2、在test目录下也是同样的操作
5、添加target文件 target是所有的输出文件,编译后的.class文件
6、在main下面的resources里面添加配置文件
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、选中查询全部信息运行测试类
10、解决数据库连接
解决办法
这个解决办法,连接数据库
这个解决
最后执行这个,导入数据表