SSM_MyBatis_第一个程序

SSM_MyBatis


 

1. 简介

  • MyBatis是一款优秀的持久层框架

  • 它支持定制化SQL、存储过程以及高级映射。

  • MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。

  • MyBatis可以使用简单的XML或注解来配置和映射原生类型、接口和Java的POJO(Plain Old JavaObjects,普通老式Java对象)为数据库中的记录。

  • MyBatis本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis 。

  • 2013年11月迁移到Github。

1.1 获得MyBatis

1.2 持久化

数据持久化

  • 持久化就是将程序的数据在持久状态和瞬时状态转化的过程

  • 内存 : 断电即失

  • 数据库(JDBC) , io文件持久化

1.3 持久层

Dao层,Service层,Controller层....

  • 完成持久化工作的代码块

  • 层界限十分明显。

1.4 为什么需要MyBatis?

  • 方便

  • 传统JDBC代码太复杂 , 简化 , 框架 , 自动化

  • 优点 :

    • 简单易学

    • 灵活

    • SQL和代码的分离,提高了可维护性

    • 提供映射标签,支持对象与数据库的orm字段关系映射

    • 提供对象关系映射标签,支持对象关系组建维护

    • 提供xml标签,支持编写动态sql

  • 使用的人多


 

2. 第一个程序

搭建数据库 :

 CREATE DATABASE `mybatis`;
 ?
 USER `mybatis`;
 ?
 CREATE TABLE `user`(
  `id` INT(20) NOT NULL PRIMARY KEY,
  `name` VARCHAR(30) DEFAULT NULL,
  `pwd` VARCHAR(30) DEFAULT NULL
 )ENGINE=INNODB DEFAULT CHARSET=utf8;
 ?
 INSERT INTO `user` (`id`,`name`,`pwd`) VALUES
 (1,张三,123456),
 (2,李四,123456),
 (3,王五,123456)

新建项目 :

  1. 新建一个空的Maven项目

  2. 删除src文件夹

  3. 导入Maven依赖

     <dependencies>
             <!--mysql-->
             <dependency>
                 <groupId>mysql</groupId>
                 <artifactId>mysql-connector-java</artifactId>
                 <version>5.1.48</version>
             </dependency>
             <!--mybatis-->
             <dependency>
                 <groupId>org.mybatis</groupId>
                 <artifactId>mybatis</artifactId>
                 <version>3.5.7</version>
             </dependency>
             <!--junit-->
             <dependency>
                 <groupId>junit</groupId>
                 <artifactId>junit</artifactId>
                 <version>4.12</version>
             </dependency>
         </dependencies>

创建模块 :

配置文件请参照中文文档 :https://mybatis.org/mybatis-3/zh/index.html

  1. 编写mybatis核心配置文件 (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核心配置文件-->
     <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&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
                     <property name="username" value="root"/>
                     <property name="password" value="root"/>
                 </dataSource>
             </environment>
         </environments>
     </configuration>
  2. 编写mybatis工具类

     public class MybatisUtil {
         private static SqlSessionFactory sqlSessionFactory;
         static {
             try {
                 //1. 获取sqlSessionFactory对象
                 String resource = "mybatis-config.xml";
                 InputStream inputStream = Resources.getResourceAsStream(resource);
                 sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
             } catch (IOException e) {
                 e.printStackTrace();
             }
         }
         //2. 有了SqlSessionFactory,就可以从中获得SqlSession实例,其中完全包含了面向数据库执行SQL命令所需的所有方法
         public static SqlSession getSqlSession() {
             return sqlSessionFactory.openSession();
         }
     }

注意 : sqlSessionFactory提高作用域后记得不要再新静态块中再次定义,否则报错空指针异常

编写方法 :

  • 实体类

     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 {
         List<User> getUserList();
     }
  • 接口实现类(UserMapper.xml) -- 由UserDaoImpl转换为Mapper配置文件

     <?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">
     <!--绑定一个对应Dao/Mapper接口-->
     <mapper namespace="com.study.dao.UserDao">
         <!--Select查询语句:id方法,resultType结果类型-->
         <select id="getUserList" resultType="com.study.pojo.User">
             select * from mybatis.user
         </select>
     </mapper>

测试 !

接口UserDao下方法List<User> getUserList();后右键 --> Go To --> Test 创建测试

 public class UserDaoTest extends TestCase {
     @Test
     public void test(){
         //1. 获得SqlSession对象
         SqlSession sqlSession = MybatisUtil.getSqlSession();
         //2. 方式一: 执行SQL
         UserDao mapper = sqlSession.getMapper(UserDao.class);
         List<User> userList = mapper.getUserList();
         for (User user : userList) {
             System.out.println(user);
         }
         //2. 方式二: (旧方法,不推荐)
         /*
         List<Object> objects = sqlSession.selectList("com.study.dao.UserDao.getUserList");
         for (Object user : objects) {
             System.out.println(user);
         }
         */
         //3. 关闭SqlSession
         sqlSession.close();
     }
 }

 

项目目录

SSM_MyBatis_第一个程序

可能遇到的遇到问题

1.配置文件没有注册

2.绑定接口错误

3.方法名不对

4.返回类型不对

5.Maven导出资源问题

 <!--pom.xml  --  在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>

 



SSM_MyBatis_第一个程序

上一篇:SWFObject最实用的功能


下一篇:PS后期如何打造梦幻逆光