初学者使用mybatis-第一天

初学者使用mybatis

1. Mybatis ****

MyBatis 是支持普通 SQL 查询存储过程高级映射的优秀持久层框架。MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索封装。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJO(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录.

JDBC->dbutils->MyBatis->Hibernate

2. mybatis 快速入门

编写第一个基于 mybaits 的测试例子:

2.1. 添加 jar

【mybatis】
mybatis-3.1.1.jar
【MYSQL 驱动包】
mysql-connector-java-5.1.7-bin.jar

  
 
  • 1
  • 2
  • 3
  • 4

2.2. 建库+表

create database mybatis;
use mybatis;
CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, NAME
VARCHAR(20), age INT);
INSERT INTO users(NAME, age) VALUES('Tom', 12);
INSERT INTO users(NAME, age) VALUES('Jack', 11);

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2.3. 添加 Mybatis 的配置文件conf.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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
</configuration>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

2.4. 定义表所对应的实体类

public class User {
private int id;
private String name;
private int age;
//get,set 方法
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2.5. 定义操作 users 表的 sql 映射文件 userMapper.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.ykq.mybatis_test.test1.userMapper">
<select id="getUser" parameterType="int" resultType="com.ykq.mybatis_test.test1.User">
select * from users where id=#{id}
</select>
</mapper>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2.6. conf.xml 文件中注册 userMapper.xml 文件

<mappers>
<mapper resource="com/ykq/mybatis_test/test1/userMapper.xml"/>
</mappers>

  
 
  • 1
  • 2
  • 3

2.7. 编写测试代码:执行定义的 select 语句

public class Test {
public static void main(String[] args) throws IOException {
String resource = "conf.xml";
//加载 mybatis 的配置文件(它也加载关联的映射文件)
Reader reader = Resources.getResourceAsReader(resource);
//构建 sqlSession 的工厂
SqlSessionFactory sessionFactory = new
SqlSessionFactoryBuilder().build(reader);
//创建能执行映射文件中 sql 的 sqlSession
SqlSession session = sessionFactory.openSession();
//映射 sql 的标识字符串
String statement = "com.atguigu.mybatis.bean.userMapper"+".selectUser";
//执行查询返回一个唯一 user 对象的 sql
User user = session.selectOne(statement, 1);
System.out.pritln(user);
}
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

常见错误

在这里插入图片描述
解决方案: 在mybatis-config,讲映射文件导入mybatis-config.xml
在这里插入图片描述
在这里插入图片描述
mybatis乱码解决方案
在这里插入图片描述
在这里插入图片描述
出现这个错误
在这里插入图片描述
解决方法:mybatis-config.xml中数据库连接url后添加时区

serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=true

url: jdbc:mysql:``//localhost:3306/test?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=true

mybatis传参对应问题

mybatis插入语句在这里插入图片描述
mybatis dao层方法里面 传参数没有写@Param这个注解的话,映射文件增删改查语句的字段可以一一对应(传入的参数可以为一个对象或一个参数),
在这里插入图片描述
在这里插入图片描述
如果是多个参数,则需要Param这个注解,映射文件的sql语句才可以一一对应
在这里插入图片描述
在这里插入图片描述

文章来源: blog.csdn.net,作者:猿来是蜡笔小象啊,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq_44709837/article/details/115023435

(完)