mybatis基础

写在前面:

mybatis是个ORM框架,与传统的JDBC不一样,mybatis通过实体类映射来链接数据库里的数据,通过封装避免了自己处理resultset,此外mybatis中Dao接口不需要有实现类来实现,而是通过注册mapper.xml配置文件来实现访问数据库,sql语句写在配置文件中,方便管理,随后在配置文件中添加mapper标签形成关联即可。使用传统的JDBC的话每一个sql语句都得封装一层,过于繁琐。mybatis大大的简化了代码量。

1,在根目录的pom.xml中添加maven依赖 

<dependencies>
<!--mytabis依赖-->
  <dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.2</version>
  </dependency>

<!--mysql依赖-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.22</version>
    </dependency>
</dependencies>
 

 

 

 

 

 

 

 

 

2,创建模块

根目录->new->module articatid按照规范起名mybatis-01

添加完成后pom.xml配置文件中会多出modules标签

 

 

 3,配置mybatis核心配置文件(链接数据库)

mybatis-01->src->main->resources->new file mybatis-config.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="${driver}"/> <!--填自己的链接数据库所需要的driver-->
        <property name="url" value="${url}"/>  <!--填写url-->
        <property name="username" value="${username}"/> <!--填写username-->  
        <property name="password" value="${password}"/> <!--填写password-->
      </dataSource>
    </environment>
  </environments>
  
</configuration>

4,编写mybatis工具类

//用来获取sqlsession的工具类
public class MybatisUtils {
    private static SqlSessionFactory sqlSessionFactory;
    static {
        try {
            //获取sqlsessionFactory对象
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static SqlSession getSqlSession(){
        return sqlSessionFactory.openSession();
    }


}

5,数据库建表,编写实体类,dao接口,mapper.xml

 

 

 

//实体类
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接口
public interface userDao {
    public user selectOne(int id);
   public List<user> getAll();
}
<!--userMapper.xml-->
<?
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 namespace="com.grigeorge.dao.userDao"> <select id="getAll" resultType="com.grigeorge.entity.user"> select * from mybatis.user </select> <select id="selectOne" resultType="com.grigeorge.entity.user"> select * from mybatis.user where id = #{id} </select> </mapper>

写完后须在mybatis-config.xml中添加mapper标签形成映射关联

<mappers>
    <mapper resource="com/grigeorge/dao/userMapper.xml"/> <!--userMapper.xml的相对路径-->
  </mappers>

 

6,测试

public class userDaoTest {
    public static void main(String[] args) {
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        userDao userDao =sqlSession.getMapper(userDao.class);
        List<user> userList= userDao.getAll();
        for (user user : userList) {
            System.out.println(user);
        }
//        user user = userDao.selectOne(4);
//        System.out.println(user);
//提交事务
sqlSession.commit();
//关闭会话

sqlSession.close();

} }

总结:

mybatis使用时可分为以下的关键步骤:

0,数据库建表,写入数据。

1,封装sqlSession的工具类 。即 MybatisUtils

2,写与数据库对应的实体类。

3,编写核心配置文件。即 mybatis-config.xml 

4,编写mapper接口和mapper配置文件

5,将mapper配置文件加入到核心配置文件中形成映射 。

6,写测试类进行测试。

 

补充遇到的一些问题:

tips:要将代码这中的注释删除 ,否则会报错。

路径问题:可能会遇到找不到userDao.xml和找不到实体类的情况,需要检查配置时的包路径是否正确。

 

 

###报错 :Cause: java.io.IOException: Could not find resource com/grigeorge/dao/userMapper.xml

解决方案:在根目录下的pom.xml中加入以下代码

 <build>
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.xml</include>
            </includes>
        </resource>
    </resources>
</build>

###报错:

 

 

 

 解决方案:修改mybatis-config.xml中的url配置,

<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>

改为:

<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&amp;useJDBCCompliantTimezoneShift=true&amp;useLegacyDatetimeCode=false&amp;serverTimezone=UTC"/>

 

问题解决后得到测试数据

 

posted @ 2021-10-14 16:23  grigeorge  阅读(47)  评论(0编辑  收藏  举报