文章目录
- 一、mybatis简介
- 二、创建数据库与表
- 三、MyBatis的运用
- 1、创建Maven项目 - MyBatisDemo
- 2、初始化
- 3、在pom文件里添加相应的依赖
- 4、添加新的依赖
- 5、查看下载到本地的jar包
- 6、通过仓库添加jar包依赖
- 7、创建包名---net.tp.mybatis.bean
- 8、创建用户实体类---User
- 9、编写实体类--User
- 10、在resources目录里创建mapper子目录
- 11、创建用户实体配置文件
- 12、编写UserMapper.xml
- 13、在resources目录里创建mybatis-config.xml
- 14、编写mybatis-config.xml
- 15、在resources里创建日志属性文件
- 16、编写日志文件
- 17、在java/test里创建net.tp.mybatis.bean包
- 18、创建测试类 - TestUserOperation
- 19 、在java目录里创建net.tp.mybatis.mapper包
- 20、创建接口 - UserMapper
- 21、在java/test里创建net.tp.mybatis.mapper包
- 20、创建测试类 - TestUserMapper
- 四、通过Java来获取MyBatis配置文件获取SQL会话对象
- 总结
一、mybatis简介
二、创建数据库与表
1、在Navicat里创建MySQL数据库testdb
2、创建用户表 - t_user
SQL语句来创建表:
CREATE TABLE `t_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`address` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
3、在用户表里插入3条记录
方法(一)、直接插入记录
方法(二)、运用SQL语句插入记录
4、查看用户表记录
三、MyBatis的运用
1、创建Maven项目 - MyBatisDemo
2、初始化
3、在pom文件里添加相应的依赖
4、添加新的依赖
5、查看下载到本地的jar包
6、通过仓库添加jar包依赖
(一)、首先打开Maven Repository网
- 官网网址 :http://mvnrepository.com
(二)、搜索MyBatis
- 找到3.5.6版本
- 复制到pom文件里的元素里
7、创建包名—net.tp.mybatis.bean
8、创建用户实体类—User
9、编写实体类–User
- 实体类的类型与数据库的用户表的类型必须一致
10、在resources目录里创建mapper子目录
11、创建用户实体配置文件
(一)、新建的时候默认不显示xml的入口
(二)、需要自己手动去配置下模板,然后就是激活下模板
(三)、首先点击file—settings—Editor----file and code templates----±----entension后面的输入框输入xml ,勾选enable live templates (激活模板)就OK了
- 现在就可以创建xml文件
12、编写UserMapper.xml
- 注意:条件(where)第一个id是字段名 第二个id是参数名。传入参数一般用 #,查询属性值一般用 $
13、在resources目录里创建mybatis-config.xml
14、编写mybatis-config.xml
15、在resources里创建日志属性文件
16、编写日志文件
17、在java/test里创建net.tp.mybatis.bean包
18、创建测试类 - TestUserOperation
- 编写测试类
- 运行测试方法 - testFindById()
- 运行测试方法 - testFindAll()
19 、在java目录里创建net.tp.mybatis.mapper包
20、创建接口 - UserMapper
- 编写接口—UserMapper
21、在java/test里创建net.tp.mybatis.mapper包
20、创建测试类 - TestUserMapper
- 编写测试类
- 运行测试方法 - testFindById()
- 运行测试方法 - testFindAll()
四、通过Java来获取MyBatis配置文件获取SQL会话对象
(一)、查看官网上给出的资料
(二)、创建测试类
复制TestUserMapper,改为TestUserMapperNew
package net.tp.mybatis.mapper;
import net.tp.mybatis.bean.User;
import org.apache.ibatis.datasource.pooled.PooledDataSource;
import org.apache.ibatis.mapping.Environment;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.ibatis.transaction.TransactionFactory;
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import javax.sql.DataSource;
import java.util.List;
/**
* 功能:测试用户映射器接口
* 作者:tp
* 日期:2021年03月04日
*/
public class TestUserMapperNew {
private SqlSession sqlSession; // SQL会话
private UserMapper userMapper; // 用户映射器
@Before
public void init() {
//创建数据源
DataSource dataSource =new PooledDataSource("com.mysql.jdbc.Driver",
"jdbc:mysql://localhost:3306/testdb?useSSL=false","root","root");
//创建事务工厂
TransactionFactory transactionFactory = new JdbcTransactionFactory();
//创建数据库环境
Environment environment = new Environment("development", transactionFactory, dataSource);
//基于环境创建配置对象
Configuration configuration = new Configuration(environment);
//添加用户映射器接口
configuration.addMapper(UserMapper.class);
//基于配置对象构建SQL会话工厂
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(configuration);
/*// 读取MyBatis配置文件作为字符输入流
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
// 基于MyBatis配置文件构建SQL会话工厂
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);*/
// 利用SQL会话工厂获取SQL会话
sqlSession = factory.openSession();
// 利用SQL会话获取用户映射器对象
userMapper = sqlSession.getMapper(UserMapper.class);
// 提示用户SQL会话对象创建成功
System.out.println("sqlSession对象已创建。");
}
@Test
public void testFindById() {
int id = 1;
User user = userMapper.findById(id);
if (user != null) {
System.out.println(user);
} else {
System.out.println("编号为[" + id + "]的用户未找到。");
}
}
@Test
public void testFindAll() {
List<User> users = userMapper.findAll();
users.forEach(user -> System.out.println(user));
System.out.println();
for( int i=0; i< users.size();i++){
System.out.println(users.get(i));
}
System.out.println();
for(User user : users){
}
}
@After
public void destroy() {
// 关闭SQL会话
sqlSession.close();
// 提示用户SQL会话对象关闭
System.out.println("sqlSession对象已关闭。");
}
}
(三)、运行测试方法testFindById()和testFindAll,查看效果
- 出现这个错误的原因是用户映射器没有绑定有效的SQL语句,需要去绑定映射接口
(四)、修改用户映射器接口UserMapper
(五)、运行测试方法testFindById()和testFindAll,查看结果
总结
让我明白一个道理,遇到困难的时候要多方面思考,不要单一思考。结合官网来在不使用XML的情况下构建SqlSessionFactory,开始的时候只是理解,大概知道在哪里改主要的,可是是迷迷糊糊地不知道从哪里下手,下手了就报错,听了老师讲解一下子恍然大悟
让我明白了,对知识点不了解没有掌握,下来应该多多花时间去理解