思路流程:搭建环境-->导入Mybatis--->编写代码--->测试
2.1、搭建实验数据库
CREATE DATABASE `mybatis`;
USE `mybatis`;
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(20) NOT NULL,
`name` varchar(30) DEFAULT NULL,
`pwd` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into `user`(`id`,`name`,`pwd`) values (1,'狂神','123456'),(2,'张三','abcdef'),(3,'李四','987654');
engine=innodb和engine=myisam区别:
1、myisam,默认类型。是存储记录和文件的标准类型,支持全文搜索,可以被压缩,与其他引擎相比,有检查和修复表格的大部分工具,不支持事务,不支持外键。强调的是性能,执行速度比较快,可以在不同的系统中迁移。如果执行大量 的SELECT,MyISAM是更好的选择。
2、innodb,支持事务处理等高级处理,支持外键,如果执行大量的select和update语句,出于性能考虑,使用innodb是最好的选择。
2.2、创建一个模块
当前目录下的Mybatis-Study创建一个model-maven普通文件mybatis-01
在resources文件下创建mybatis-config.xml
编写mybatis的核心配置文件
-
mapper配置实现Dao接口的xml,如果找不到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核心配置文件--> <configuration> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <!--mysql8 是com.mysql.cj.jdbc.Driver--> <property name="driver" value="com.mysql.jdbc.Driver"/> <!--mysql5.7.28,加入useSSl=true&,导致链接失败--> <!--MySQL8里还需要配置时区--> <!--useSSL安全链接;useUnicode=true&characterEncoding=UTF-8" 不添加这两句数据库写入数据将为问号--> <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <mappers> <mapper resource="/UserMapper/userMapper.xml"/> </mappers> </configuration>
-
编写mybatis工具类
import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import java.io.IOException; import java.io.InputStream; public class Util{ private static SqlSessionFactory sqlSessionFactory; // 根据mybatis-config的路径填写,默认路径是resorce里面 String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); // 根据官方文档Acquiring a SqlSession from SqlSessionFactory 所以需要获取SqlSession public static SqlSession getSession(){ return sqlSessionFactory.openSession(); } }
- 编写pojo(model)模块
public class User {
private int id; //id
private String name; //姓名
private String pwd; //密码
//构造,有参,无参
//set/get
//toString()
}
-
编写Dao层模块(Mapper)
- 定义一个UserMapper接口
import com.kuang.pojo.User; import java.util.List; public interface UserMapper { List<User> selectUser(); }
- 通过xml实现UserMapper接口
<?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代表要实现的接口 // id代表实现接口的方法 // resultType代表sql语句返回值的类型,通常使用两种resultType、resultMap <mapper namespace="com.kuang.dao.UserMapper"> <select id="selectUser" resultType="com.kuang.model.User"> select * from mybatis.user </select> </mapper>
-
编写测试类
public class MyTest { @Test public void selectUser() { SqlSession session = MybatisUtils.getSession(); //方法一: //List<User> users = session.selectList("com.kuang.mapper.UserMapper.selectUser"); //方法二: // getMapper获取Dao层接口 UserMapper mapper = session.getMapper(UserDao.class); List<User> users = mapper.selectUser(); for (User user: users){ System.out.println(user); } session.close(); } }