Mybatis
项目完成步骤
-
数据库
-
新建项目
Maven->Next->设置名称,存储位置->完成
-
导入依赖
-
创建模块
新建->模块->Maven->输入信息->完成
-
编写Mybatis的核心配置文件和Mybatis的工具类
核心配置文件
在Mybatis-01/src/main/resuorce下新建mybatis-config.xml文件,粘贴一下内容
<?xml version="1.0" encoding="UTF8" ?> <!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="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </dataSource> </environment> </environments> <!--每个Mapper.xml都需要注册--> <mappers> <mapper resource="top/yanggeol/dao/UserMapper.xml"></mapper> </mappers> </configuration>
修改部分内容:数据库相关信息
<?xml version="1.0" encoding="UTF8" ?> <!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?useSSL=true&useUnicode=true&characterEncoding=UTF-8"/> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> <!--每个Mapper.xml都需要注册--> <mappers> <mapper resource="top/yanggeol/dao/UserMapper.xml"></mapper> </mappers> </configuration>
工具类
java包创建包top.yanggeol.dao和top.yanggeol.utils,utils中创建MybatisUtils工具类
package top.yanggeol.utils; 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; //sqlSessionFactory --> sqlSession 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(); } } // 既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。 // 你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句 public static SqlSession getSqlSession() { SqlSession sqlSession = sqlSessionFactory.openSession(); return sqlSession; } }
-
编写代码
utils包同级下创建破击包,包下创建User实体类
package top.yanggeol.pojo; //实体类 public class User { private int id; private String name; private String pwd; public User() {} public User(int id,String name,String pwd){ this.id = id; this.name =name; this.pwd = 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; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", pwd='" + pwd + '\'' + '}'; } }
dao层新建接口UserDao.java
package top.yanggeol.dao; import top.yanggeol.pojo.User; import java.util.List; public interface UserDao { List<User> getUserList(); }
dao层新建配置文件UserMapper.xml
<?xml version="1.0" encoding="UTF8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!--绑定一个对应的Dao接口--> <mapper namespace="top.yanggeol.dao.UserDao"> <!--查询 id对应接口中的方法--> <select id="getUserList" resultType="top.yanggeol.pojo.User"> select * from mybatis.user </select> </mapper>
-
测试
在test/java新建top.yanggeo.dao包并编写UserDaoTest.java测试文件
package top.yanggeol.dao; import org.apache.ibatis.session.SqlSession; import org.junit.Test; import top.yanggeol.pojo.User; import top.yanggeol.utils.MybatisUtils; import java.util.List; public class UserDaoTest { @Test public void test() { // 1. 获得SqlSession对象 SqlSession sqlSession = MybatisUtils.getSqlSession(); // 2. 方式1执行SQL // UserDao userDao = sqlSession.getMapper(UserDao.class); // List<User> userList = userDao.getUserList(); // 方式2 List<User> userList = sqlSession.selectList("top.yanggeol.dao.UserDao.getUserList"); for (User user : userList) { System.out.println(user); } // 关闭SqlSession sqlSession.close(); } }
-
结果
踩坑
- 在Maven配置中添加一下代码防止找不到Mapper的xml文件找不到
The error may exist in top/yanggeol/dao/UserMapper.xml
<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>
-
com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 1 字节的 UTF-8 序列的字节 1 无效。
将xml文件的第一行的UTF-8改成UTF8 -
版本类型不对(Error : java 不支持发行版本xxx )
看在FIle->项目结构>module里面语言级别与当前java版本是不是一样的
然后看setting->如下java版本是否与当前本地的一样
-
然后基本是问题就能解决了,程序测试也可以运行出来了.