目录
一、 首先,导入jar包,通过库依赖方式导入,将依赖加入到pom.xml中的
dependencies标签之间(jar包版本选自己适用的即可)
在包com.test.dao下面创建一个接口类Student,如图:
在包com.test.domain下创建实体类SaveStudent
二、在resources下的com.test.dao包中创建执行SQL的xml文件,名为Student
三、在resources下创建配置文件batis_config
四、配置一个日志文件log4j.properties(本人较菜,直接复制的)
在包com.test.service中创建测试类,TestMybatis
二、在执行文件的xml中添加SQL语句,直接放在Student的xml文件中的mapper标签中
三、在一个方法中进行测试(加载文件的前五步放到了全局中去,此处省略了)
一、依赖库
一、 首先,导入jar包,通过库依赖方式导入,将依赖加入到pom.xml中的
dependencies标签之间(jar包版本选自己适用的即可)
1、导入MyBatis jar 包,其库依赖:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.0</version>
</dependency>
2、导入jadc jar包,其库依赖为:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.25</version>
</dependency>
3、导入测试jar包 junit(测试用)
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
4、导入日志jar包,(显示日志用)
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.13</version>
</dependency>
二、我的数据库测试用表,表名为user
一、属性
二、其值
三、手动创建 接口类、实体类
一、创建接口类
在包com.test.dao下面创建一个接口类Student,如图:
二、创建实体类
在包com.test.domain下创建实体类SaveStudent
四、在resources下创建资源文件
一、资源文件的目录如图:
二、在resources下的com.test.dao包中创建执行SQL的xml文件,名为Student
<中文部分为自己手动添加注释,删除即可>
<?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">
<这两行为MyBatis的约束,有了这个,就可以是别MyBatis中的标签,可以直接复制>
<mapper namespace="com.test.dao.Student">
<select id="selectAllStudent" resultType="com.test.domain.SaveStudent">
select id,name from user
</select>
<select标签标示查询,同样insert、update、delete分别标示插入、修改、删除,上述中的namespace中表示的是接口的路径,执行是通过路径找到此接口,select标签中的id是接口中的方法名,后边的那句
resultType="com.test.domain.SaveStudent"表示的是返回值,这个返回值类型是一个类的对象,标示把查询的内容储存到实体类之中,这个路径也是这个类的路径,然后下面就是要查询的SQL语句了>
</mapper>
三、在resources下创建配置文件batis_config
<?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>
<!--这两句是约束,有了这个就可以识别MyBatis中的标签,直接复制即可-->
<!--配置mybatis环境,名字自己取-->
<environments default="work">
<!--配置工作环境,名字自己取-->
<environment id="work">
<!--配置事务类型-->
<!-- 这是数据库连接池-->
<transactionManager type="JDBC"></transactionManager>
<!--配置连接数据库的信息:用的是数据源(连接池)
mybatis内置的连接池
-->
<dataSource type="POOLED">
<!-- name后的值是固定的-->
<!-- 这是加载驱动,如果是8.0以上的mysql,应为 com.mysql.cj.jdbc.Driver-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<!-- website这个是我数据库的名字 -->
<property name="url" value="jdbc:mysql://localhost:3306/website?serverTimezone=Asia/Shanghai"/>
<!-- root是我的登录名-->
<property name="username" value="root"/>
<!-- 123456是我的登录密码-->
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!--配置mybatis映射配置的位置-->
<mappers>
<!-- 这个识别的是resources下的数据库执行的xml文件通过路径查找,如有多个,直接用mapper添加即可-->
<mapper resource="com.test.dao/Student"></mapper>
</mappers>
</configuration>
四、配置一个日志文件log4j.properties(本人较菜,直接复制的)
# Set root category priority to INFO and its only appender to CONSOLE.
#log4j.rootCategory=INFO, CONSOLE debug info warn error fatal
log4j.rootCategory=debug, CONSOLE, LOGFILE
# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE
# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n
# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=d:\axis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n
#在倒数第四五行左右,d:\axis.log,表示在此盘下创建一个日志文件
五、创建一个测试类
在包com.test.service中创建测试类,TestMybatis
package com.test.service;
import com.test.dao.Student;
import com.test.domain.SaveStudent;
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.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class TestMybatis {
@Test
public void testFindAll(){
try {
// 1.读取配置文件
InputStream resourceAsStream = Resources.getResourceAsStream("batis_config");
// 2.构建者模式:创建构建者对象SqlSessionFactoryBuilder
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
// 3.使用构建者创建工厂对象SqlSessionFactory
SqlSessionFactory build = builder.build(resourceAsStream);
// 4.使用SqlSessionFactory生产SqlSession对象
SqlSession sqlSession = build.openSession();
// 5. 使用SqlSession创建dao接口的代理对象
Student mapper = sqlSession.getMapper(Student.class);
// 6.使用代理对象执行查询所有方法
List<SaveStudent> allStudent = mapper.selectAllStudent();
// 7.遍历结果
for (SaveStudent student : allStudent){
System.out.println(student.getId()+" "+student.getName());
}
// 8.释放资源
resourceAsStream.close();
sqlSession.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
六、执行结果(截取有结果的部分)
七、若是执行插入操作
一、在Student接口类中写入
二、在执行文件的xml中添加SQL语句,直接放在Student的xml文件中的mapper标签中
解释:id同样为Student接口中方法的名字,
<insert id="insertus" parameterType="com.test.domain.SaveStudent">
insert into user(id,name)
values(#{id},#{name})
</insert>
三、在一个方法中进行测试(加载文件的前五步放到了全局中去,此处省略了)
//插入表user
@Test
public void insertUser(){
SaveStudent saveStudent=new SaveStudent();
saveStudent.setId("000000");
saveStudent.setName("000000");
int count=mapper.insertus(saveStudent);
System.out.println(count);
}
四、结果
这是运行后的日志文件,Updates这个是表示一条记录以更新
可以看到一条数据已经插入成功