2、第一个MyBatis程序


思路流程:搭建环境-->导入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

image-20200131100107659.png
  • 编写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&amp;,导致链接失败-->
                    <!--MySQL8里还需要配置时区-->
                    <!--useSSL安全链接;useUnicode=true&amp;characterEncoding=UTF-8" 不添加这两句数据库写入数据将为问号-->
                    <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;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();
        }
    }
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容