mybatis介绍
Posted 小布丁value
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis介绍相关的知识,希望对你有一定的参考价值。
mybatis介绍
mybatis
是Apache旗下开源的持久层框架 早期通过JDBC连接数据库(通过java代码来操作数据库) mybatis就是基于JDBC开发出的框架
mybatis的中文地址:https://mybatis.org/mybatis-3/zh/index.html
mybatis的使用步骤
连接test库下的student表进行讲解
CREATE TABLE `student` (
`SID` int(11) NOT NULL,
`Sname` varchar(25) NOT NULL,
`Ssex` varchar(4) DEFAULT NULL,
`Sage` int(11) DEFAULT NULL,
PRIMARY KEY (`SID`),
KEY `idx_name` (`Sname`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1、引入mybatis依赖
通过maven管理依赖,maven下载可参见https://editor.csdn.net/md/?articleId=118500151
<!--mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.1</version>
</dependency>
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.39</version>
</dependency>
2、配置全局配置信息(nybatis-config.xml)
先创建一个名为resources的字典
配置全局信息
<?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">
<!--mysql 5.XXX-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
</configuration>
3、Pojo类(Student.java)
pojo类是完成数据库数据要映射成的java对象
/**
* pojo类
* 原则:如果需要将表中的数据映射成java对象
* 库表名称映射出Java类的名称
* 注意:Java中的属性名和数据库中的字段名保持一致
*/
public class Student {
private Integer SID;
private String Sname;
private String Ssex;
private Integer Sage;
public Integer getSID() {
return SID;
}
public void setSID(Integer SID) {
this.SID = SID;
}
public String getSname() {
return Sname;
}
public void setSname(String sname) {
Sname = sname;
}
public String getSsex() {
return Ssex;
}
public void setSsex(String ssex) {
Ssex = ssex;
}
public Integer getSage() {
return Sage;
}
public void setSage(Integer sage) {
Sage = sage;
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder("{");
sb.append("\\"SID\\":")
.append(SID);
sb.append(",\\"Sname\\":\\"")
.append(Sname).append('\\"');
sb.append(",\\"Ssex\\":\\"")
.append(Ssex).append('\\"');
sb.append(",\\"Sage\\":")
.append(Sage);
sb.append('}');
return sb.toString();
}
}
4、mapper接口文件(StudentMapper.java)
/**
* mapper.java接口文件
* 给定的就是操作数据库的方法
*/
public interface StudentMapper {
//通过id查询用户信息
public Student selectStudentById(Integer id);
}
5、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">
<!--namespace:命令空间 为对应的接口文件的全路径-->
<mapper namespace="com.tulun.mapper.StudentMapperGY">
<!--
select查询标签
id:属性,具有唯一性,接口中的方法名
parameterType:入参类型
resultType:返回值的全路径
-->
<select id="selectStudentById" parameterType="int" resultType="com.tulun.bean.Student">
select * from student where SID = #{id}
</select>
</mapper>
注意:程序来读取当前的xml文件,需要进行配置,在全局配置文件中完成配置
<!--将库表对应的xml文件指定路径-->
<mappers>
<mapper resource="mapper/StudentMapper.xml"/>
</mappers>
注意:xml配置的不同
6、执行查询操作
public static void main( String[] args ) throws IOException {
//指定mybatis的全局配置文件
String fileName= "mybatis-config.xml";
//通过流的形式来读取配置文件
InputStream inputStream = Resources.getResourceAsStream(fileName);
//创建会话工厂
SqlSessionFactory sqlSessionFactory =
new SqlSessionFactoryBuilder().build(inputStream);
//获取会话
SqlSession sqlSession = sqlSessionFactory.openSession();
//通过动态代理获取一个代理对象
StudentMapperGY studentMapperGY = sqlSession.getMapper(StudentMapperGY.class);
Student student = studentMapperGY.selectStudentById(3);
System.out.println(student);
}
日志分析
1、日志依赖
<!--log4j日志文件-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
2、日志配置文件
创建log4j.properties文件
## debug 级别
log4j.rootLogger=DEBUG,Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d{yyyy-MM-dd-HH\\:mm\\:ss,SSS} [%t] [%c] [%p] - %m%n
log4j.logger.com.mybatis=DEBUG /
##输出sql 语句
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
3、日志打印
2021-07-02-10:31:27,929 [main] [org.apache.ibatis.transaction.jdbc.JdbcTransaction] [DEBUG] - Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@dc24521]
2021-07-02-10:31:27,931 [main] [com.tulun.mapper.StudentMapperGY.selectStudentById] [DEBUG] - ==> Preparing: select * from student where SID = ?
2021-07-02-10:31:28,036 [main] [com.tulun.mapper.StudentMapperGY.selectStudentById] [DEBUG] - ==> Parameters: 3(Integer)
2021-07-02-10:31:28,196 [main] [com.tulun.mapper.StudentMapperGY.selectStudentById] [DEBUG] - <== Total: 1
{"SID":3,"Sname":"sunfen","Ssex":"nan","Sage":21}
数据插入示例
insert into student (XXX) values():
mapper.java接口文件
//插入数据
int insertStudent(Student student);
mapper.xml文件
<!--插入数据-->
<insert id="insertStudent" parameterType="com.tulun.bean.StudentGY">
insert into student (SID,Sname,Sage,Ssex) values (#{SID},#{Sname},#{Sage},#{Ssex})
</insert>
执行代码:
//指定mybatis的全局配置文件
String fileName= "mybatis-config.xml";
//通过流的形式来读取配置文件
InputStream inputStream = Resources.getResourceAsStream(fileName);
//创建会话工厂
SqlSessionFactory sqlSessionFactory =
new SqlSessionFactoryBuilder().build(inputStream);
//获取会话
SqlSession sqlSession = sqlSessionFactory.openSession();
//通过动态代理获取一个代理对象
StudentMapperGY studentMapperGY = sqlSession.getMapper(StudentMapperGY.class);
// 插入操作
StudentGY studentGY = new StudentGY();
studentGY.setSID(21);
studentGY.setSname("GYSX");
studentGY.setSage(21);
studentGY.setSsex("nan");
studentMapperGY.insertStudent(studentGY);
sqlSession.commit();
删除数据示例
mapper.java接口文件
//删除数据
int delStudentById(Integer id);
mapper.xml配置文件
<!--删除数据-->
<delete id="delStudentById" parameterType="int">
delete from student where SID = #{id}
</delete>
修改数据示例
mapper.java接口文件
//修改数据
int updateNameById(StudentGY studentGY);
mapper.xml配置文件
<!--修改数据-->
<update id="updateNameById" parameterType="com.tulun.bean.StudentGY">
update student set Sname = #{Sname} where SID = #{SID}
</update>
以上是关于mybatis介绍的主要内容,如果未能解决你的问题,请参考以下文章
SSM-MyBatis-05:Mybatis中别名,sql片段和模糊查询加getMapper