2.第一个MyBatis程序
一、环境
1 MySQL 5.1.46,maven-3.5.0,IDEA,jdk 8+
二、知识储备
Java基础,Mysql,JDBC,maven,Junit
三、创建和配置项目
1、先创建一个maven空项目(普普通通的就ok,不用选webapp)

下一步我按照我习惯的命名方式来命名

这是我们的文件目录

2.在pom.xml中配置jar包(导入依赖)(上网复制就行)

<!--导入依赖--> <dependencies> <!--mysql驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.2</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> </dependencies> <!--在build中配置resources,来防止我们资源导出失败的问题--> <build> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource> </resources> </build>
3.创建一个数据库并进行连接
创建一个数据库,这里我用navicat创建


这是创建表代码
CREATE TABLE `user` ( `id` int(20) NOT NULL AUTO_INCREMENT, `name` varchar(30) DEFAULT NULL, `pwd` varchar(30) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
ok,数据库和表创建完了,现在我们准备把idea和数据库连接起来

然后输入自己的User和Password,可以Test Connection测试一下能否连接,如果不能,看一下URL和用户名密码是否正确
4.创建Mybatis核心配置文件
MyBatis 核心配置文件( mybatis-config.xml),该文件配置了 MyBatis 的一些全局信息,包含数据库连接信息和 MyBatis 运行时所需的各种特性,以及设置和影响 MyBatis 行为的一些属性。
右键resourse点击New -> File 创建核心配置文件mybatis-config.xml(注意后缀不能丢)

编写代码如下:
<!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"> <property name="driver" value="com.mysql.jdbc.Driver"/> <!--驱动--> <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf-8&useSSL=false"/> <property name="username" value="root"/> <property name="password" value="120398"/> </dataSource> </environment> </environments> <!--每一个Mapper.xml都需要在Mybatis核心配置文件中注册--> <mappers> <mapper resource="com/zou/dao/UserMapper.xml"/> </mappers> </configuration>
注意配置文件中的URL,用户名,密码写自己的 url在连接数据库时能找到
5、编写MybatisUtils工具类
MybatisUtils类似于JDBCUtils,下图中的类和包都可以先创建好,dao包中的文件名字最好一致,不然后面可能会出问题

Mybatis的真正强大,在于她对SQL的映射,这也是她吸引人的地方。实现相同的功能,她要比直接使用JDBC省去95%的代码量。而且将SQL语句独立在Java代码之外,为程序的修改和纠错提供了更大的灵活性,可以直接修改SQL语句,而无需重新编译Java程序。
SQL映射文件也是XML格式,其顶级元素有以下几个:
- select - 映射sql查询语句
- insert - 映射sql插入语句
- update - 映射sql更新语句
- delete - 映射sql删除语句
- sql - 就像程序中可以复用的函数一样,这个元素下放置可以被其他语句重复引用的sql语句
- resultMap - 用来描述如何从数据库查询结果集中来加载对象
- cache - 给定命名空间的缓存配置
- cache-ref - 其他命名空间缓存配置引用
Mybatis-config.xml配置xml文件和接口关联。
1 <!--namespace务必和接口的全类名一致 -->
2 <mapper namespace="com.zou.dao/UserMapper.xml">
给utils包中的MybatisUtil类中添加如下代码:
public class MybatisUtils { private static SqlSessionFactory sqlSessionFactory; static { try { String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } //获取SqlSession连接 public static SqlSession getSession(){ return sqlSessionFactory.openSession(); } }
ok,工具类写完了
6、编写User实体类
在User类中编写。代码如下
package com.zou.pojo; public class User { private int id; private String name; private String pwd; 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 String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } public User(int id, String name, String pwd) { this.id = id; this.name = name; this.pwd = pwd; } }
7、编写UserMapper接口类
在dao包中的UserMapper中添加代码:
public interface UserMapper { List<User> getUserList(); }
8、编写UserMapper.xml文件
select中的就是我们sql语句,后面要增删改都是在UserMapper.xml中修改
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"> <!--namespace=绑定一个对应的Dao/Mapper接口--> <mapper namespace="com.zou.dao.UserMapper"> <!--查询语句--> <select id="getUserList" resultType="com.zou.pojo.User"> select * from mybatis.user; <!--我的数据库名字叫mybatis表是user--> </select> </mapper>
9、编写UserMapperTest测试类

import com.zou.dao.UserMapper; import com.zou.pojo.User; import com.zou.utils.MybatisUtils; import org.apache.ibatis.session.SqlSession; import org.junit.Test; import java.util.List; public class UserMapperTest { //查询所有用户和密码 @Test public void test(){ //通过MybatisUtils工具类获得sqlSession对象 SqlSession sqlSession = MybatisUtils.getSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); List<User> userList = mapper.getUserList(); //遍历user表 for (User user : userList) { System.out.println(user); } //关闭sqlSession sqlSession.close(); } }
结果如下:
报错了·····

把mybatis-config.xml中的url改成这个 useUnicode=true&characterEncoding=utf-8&useSSL=false
解决后变成这样:

经过询问群内大佬:



依旧是喜欢大力的一天

浙公网安备 33010602011771号