文章目录
- 新建数据库
- 新建项目,并导入jar包
- 添加配置文件conf.xml
- 定义实体类
- 定义操作表user的sql的映射文件 userMapper.xml
- 注册:将mapper.xml文件注册到conf.xml配置文件中
- 一共6步,这个只是测试类,这个不算
新建数据库
命名是 随便,因为这里是 数据库连接名
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);
一行一行输入
在这里我的mybatis这个数据库是建在了test这个连接里
新建项目,并导入jar包
新建Javaproject
新建lib文件夹
添加配置文件conf.xml
cofi.xml这个文件里只需要改三行
1. 数据库的名字
2.用户名 和 密码
.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" />//事务管理,类型是jdbc<dataSource type="POOLED">//数据源 连接池->提高访问速度<property name="driver" value="com.mysql.jdbc.Driver" />//加载数据库驱动//jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC 数据库是多少以上<property name="url" value="jdbc:mysql://localhost:3306/mybatis" />//访问数据库的路径,最后(mybatis)是访问数据库名字<property name="username" value="root" /><property name="password" value="root" /></dataSource></environment></environments>
</configuration>
修改后的结果是:
格式化代码
定义实体类
新建package,class
package com.zhang.mybatis.sy1;public class User {//三个变量要和数据库建的User表 字段名相同private int id;private String name;private int age;//get,set方法public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}//toString方法@Overridepublic String toString() {return "User [id=" + id + ", name=" + name + ", age=" + age + "]";}
}
定义操作表user的sql的映射文件 userMapper.xml
<mapper></mapper>这个文件是要自己写的
sql语句写在.xml文件中,实现了java和完全分离
namespace 类名
<?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.zhang.mybatis.sy1.userMapper">//namespace 命名空间,具有唯一性,类名!!!<select id="getUser" parameterType="int" resultType="com.zhang.mybatis.sy1.User">//这个id也是唯一的//parameterType 是下面输入变量的类型(这里是id的类型)//resultType 是返回的结果类型(这里是*,user的全类名),检查是否正确,按住ctrl变为超链接,点击可跳转到实体类//第一个id是字段名,#是占位符,{这个id是变量}select * from users where id=#{id}</select>
</mapper>
注册:将mapper.xml文件注册到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="123456" /></dataSource></environment></environments><mappers><mapper resource="com/zhang/mybatis/sy1/userMapper.xml" /> //先指明路径,从com开始,全路径名</mappers></configuration>
此时关于mybatis的配置步骤已全部完成 。
一共6步,这个只是测试类,这个不算
这四步是固定的
记得先写main方法
String resource = "conf.xml";
Reader reader = Resources.getResourceAsReader(resource);
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession session = sessionFactory.openSession();
新建测试类,看是否成功
先复制进去
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.rjxy.mybatis.bean.userMapper"+".selectUser";
//执行查询返回一个唯一 user 对象的 sql
User user = session.selectOne(statement, 1);
System.out.println(user);
}
}
变量1,传给了mapper里面 id=#{id},相当于 id=#{1};
都保存以后运行,这个就是数据库里id为1,的数据