Java-MyBatis框架-1(MyBatis的配置,使用)
1.MyBatis简介MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Map
1.MyBatis简介
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)
什么是框架:框架就是别人搭建好的某些功能,你只需要引用该框架并加入自己的业务代码。
好处: 提高我们的开发效率。可以简化jdbc的操作以及占位符赋值以及查询结果集的封装。
简介
MyBatis 是一款优秀的持久层Dao框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Java实体类)映射成数据库中的记录.
当前,最新版本是MyBatis 3.5.3 ,其发布时间是2019年10月20日。
mybatis – MyBatis 3 | Introduction
2.ORM思想
ORM(对象关系映射 Object Relational Mapping)是通过描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。全ORM框架主要有:Hibernate(不用写一行sql代码),EclipseLink。MyBatis属于半ORM的框架,因为需要自己建表,并需要自己写sql语句。 SSH(struts,srping,hibernate)基本不用。 SSM(springMVC,spring,mybatis)
3.如何使用MyBatis(环境搭建)
一、引入jar包(在maven中配置)
核心包{
mybatis-3.4.6.jar : mybatis核心包
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
}
需要的其他包{
mysql-connector-java-8.0.11.jar :mysql数据库包
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
junit-4.9.jar : 用于单元测试包
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
<scope>test</scope>
</dependency>
}
二、配置文件
第一步 在resources下创建mybatis的配置文件
前提是你一定要有一个名为mybatis的数据库
<?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">
//name中的值不要改,value里的值改为你自己的路径和内容
<property name="driver" value="com.mysql.cj.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=Asia/Shanghai" />
<property name="username" value="root" />
<property name="password" value="123456" />
</dataSource>
</environment>
</environments>
</configuration>
第二步 创建mybatis和数据库的映射文件
作用:映射实体和表之间的映射关系
在配置文件下新建文件夹命名为mapper,在mapper下创建需要映射的xml文件
第三步 把映射文件注册到配置文件上
这一步是在mybatis.xml文件中操作的在mybatis.xml文件下加入如下的代码
<mappers>
// 这里对应的是你mapper文件下的Mapper
<mapper resource="mapper/studentMapper.xml"/>
</mappers>
4.测试MyBatis ,mybatis完成crud操作
一、在mapper文件中打开你创建的Mapper.xml文件
二、在mapper标签中写数据库语句代码
增删改查基础代码
mapper namespace="StudentMapper">
<!--
select等标签用于查询的标签
id:标签的唯一标识
resultType: 定义返回的类型 把sql查询的结果封装到哪个实体类钟
#{id}===表示占位符等价于? 这是mybatis框架的语法
当用到多个占位符时,#{}中的值一定要与你封装的实体类的属性一致
-->
<select id="getstudent" resultType="com.gsh.entity.Student">
select * from student where id=#{id}
</select>
<insert id="addstudent" parameterType="com.gsh.entity.Student">
insert into student values(null,#{name},#{age},#{address},#{sex})
</insert>
<delete id="delestudent" parameterType="int">
delete from student where id=#{id}
</delete>
<update id="updatestudent" parameterType="com.gsh.entity.Student">
update student set name=#{name},age=#{age},address=#{address},sex=#{sex} where id=#{id}
</update>
<select id="findall" resultType="com.gsh.entity.Student">
select *from student
</select>
</mapper>
三、在测试类中测试
1.读取mybatis配置文件的内容
2. 获取SqlSessionFactory对象
3. 获取SqlSession对象----封装了对数据库操作的各种方法
相关代码如下
//查询一个学生信息
@Test
public void select_one()throws Exception{
//1.读取配置文件内容
Reader reader = Resources.getResourceAsReader("mybatis.xml");
//2.获取SqlSerrionFactory对象
SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(reader);
//3.获取sqlserrion对象
SqlSession session= factory.openSession();
//4。执行数据库操作
Student student = session.selectOne("StudentMapper.find_one",929);
System.out.println(student);
//提交
session.commit();
//关闭
session.close();
}
//查询全部学生信息
@Test
public void select_all() throws Exception{
//1.读取配置文件内容
Reader reader = Resources.getResourceAsReader("mybatis.xml");
//2.获取Sqlserrionfactory对象
SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(reader);
//3.获取Sqlsession对象
SqlSession session= factory.openSession();
List<Student> students = session.selectList("StudentMapper.find_all");
System.out.println(students);
session.commit();
session.close();
}
//添加一个学生信息
@Test
public void add_one()throws Exception{
//1.读取配置文件
Reader reader = Resources.getResourceAsReader("mybatis.xml");
//2.获取sqlsessionfactory对象
SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(reader);
//3.获取Sqlsession对象
SqlSession session= factory.openSession();
Student student=new Student();
student.setName("谢大脚");
student.setAge(38);
student.setAddress("象牙山");
student.setSex(0);
int row=session.insert("StudentMapper.add_one",student);
System.out.println(row);
session.commit();
session.close();
}
//删除一个学生信息
@Test
public void dele_one()throws Exception{
//读取配置文件
Reader reader = Resources.getResourceAsReader("mybatis.xml");
//获取sqlsessionfactory对象
SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(reader);
//获取sqlsession对象
SqlSession session= factory.openSession();
int row = session.delete("StudentMapper.dele_one", 931);
System.out.println(row);
session.commit();
session.close();
}
//修改一个学生的信息
@Test
public void update_one()throws Exception{
//读取配置文件
Reader reader = Resources.getResourceAsReader("mybatis.xml");
//获取sqlsessionfactory对象
SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(reader);
//获取sqlsession对象
SqlSession session= factory.openSession();
Student student=new Student();
student.setId(929);
student.setName("谢大脚");
student.setAge(45);
student.setAddress("象牙山");
student.setSex(0);
int row = session.update("StudentMapper.update_one", student);
System.out.println(row);
session.commit();
session.close();
}
5.添加sql日志
一、在maven中添加jar包
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
二、在配置文件下新建log4j.properties 配置文件
在文件中写入以下代码(选一种即可)
简单的:
log4j.rootLogger=DEBUG, Console
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
详细的
#将等级为DEBUG的日志信息输出到console和file这两个目的地,console和file的定义在下面的代码
log4j.rootLogger=DEBUG,console,file
#控制台输出的相关设置
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.Target = System.out
log4j.appender.console.Threshold=DEBUG
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%c]-%m%n
#文件输出的相关设置
log4j.appender.file = org.apache.log4j.RollingFileAppender
//路径写你要存放日志文件的路径
log4j.appender.file.File=路径
log4j.appender.file.MaxFileSize=10mb
log4j.appender.file.Threshold=DEBUG
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%p][%d{yy-MM-dd}][%c]%m%n
#日志输出级别
log4j.logger.org.mybatis=DEBUG
log4j.logger.java.sql=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
更多推荐
所有评论(0)