Mybatis学习记录-----Mybatis入门(基本增删改查方法)

方便回顾和加强记忆,记录一下mybatis的使用方法。mybatis的官网文档:http://www.mybatis.org/mybatis-3/zh/getting-started.html

Mybatis框架
Mybatis框架

目录

1、创建数据库

2、创建maven项目

3、导入需要的依赖包

4、创建Mybatis配置文件conf.xml

5、创建实体类

6、创建UserMapper.java

7、添加users表sql的映射文件userMapper.xml

8、在conf.xml注册userMapper.xml

9、创建SqlSessionFactory工具类

10、代码测试


 

1、创建数据库

创建数据库和表。

create database mybatis;
use mybatis;
CREATE TABLE c_user(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(32), age INT);

2、创建maven项目

具体流程查看IDEA创建基本maven项目

为了之后理解项目结构,提前把最终的目录贴出来

 

3、导入需要的依赖包

在pom.xml导入mybatis和mysql的依赖包,这样就不需要自己导入包。

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>czz.study</groupId>
    <artifactId>mybatis</artifactId>
    <version>1.0-SNAPSHOT</version>

    <name>mybatis</name>
    <!-- FIXME change it to the project's website -->
    <url>http://www.example.com</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>

        <!--Mybatis依赖包-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.2</version>
        </dependency>

        <!--Mysql驱动包-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.46</version>
        </dependency>

        <!--junit测试依赖包-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
            <plugins>
                <plugin>
                    <artifactId>maven-clean-plugin</artifactId>
                    <version>3.0.0</version>
                </plugin>
                <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
                <plugin>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>3.0.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.7.0</version>
                </plugin>
                <plugin>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.20.1</version>
                </plugin>
                <plugin>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>3.0.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-install-plugin</artifactId>
                    <version>2.5.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>2.8.2</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>

4、创建Mybatis配置文件conf.xml

XML 配置文件(configuration XML)中包含了对 MyBatis 系统的核心设置,包含获取数据库连接实例的数据源(DataSource)和决定事务作用域和控制方式的事务管理器(TransactionManager)。在src下创建一个conf.xml文件,如下图所示。这里目前只添加了数据源相关的配置(Mysql)。

<?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="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="Jovaunn1"/>
            </dataSource>
        </environment>
    </environments>

</configuration>

5、创建实体类

创建表对应实体类,并添加set/get/toString相关方法:

package czz.study.domain;

import java.io.Serializable;

public class User implements Serializable {
    
    private static final long serialVersionUID = 1L;
    
    /**
     * id  主键id
     */
    private Integer id;
    
    /**
     * name  名字
     */
    private String name;
    
    /**
     * age  年龄
     */
    private Integer age;
    
    public Integer getId() {
        
        return id;
    }
    
    public void setId(Integer id) {
        
        this.id = id;
    }
    
    public String getName() {
        
        return name;
    }
    
    public void setName(String name) {
        
        this.name = name;
    }
    
    public Integer getAge() {
        
        return age;
    }
    
    public void setAge(Integer age) {
        
        this.age = age;
    }
    
    @Override
    public String toString() {
        
        return "User{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + '}';
    }
}

6、创建UserMapper.java

在mapper包内创建UserMapper.java,并添加需要的功能接口,现在只演示简单的增删改查功能。

package czz.study.mapper;

import czz.study.domain.User;
import org.apache.ibatis.annotations.Param;

public interface UserMapper {
    
    /**
     * 根据主键id查询用户信息
     */
    User getUser(int id);
    
    /**
     * 新增用户信息
     */
    boolean insertUser(User user);
    
    /**
     * 更新主键id对应的用户信息
     */
    //@Param注解的作用是给参数命名,参数命名后就能根据名字得到参数值,正确的将参数传入sql语句中 
    //如果不加,程序会出现找不到user异常
    boolean updateUser(@Param("id") int id, @Param("user") User user);
    
    /**
     * 删除主键id对应的用户信息
     */
    boolean deleteUser(int id);
}

7、添加users表sql的映射文件userMapper.xml

userMapper.xml包含UserMapper功能相关的sql语句。

<?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">

<!-- 为这个mapper指定一个唯一的namespace,namespace的值习惯上设置成包名+功能接口映射文件名,这样就能够保证namespace的值是唯一的
例如namespace="czz.study.Mapper.UserMapper"就是czz.study.Mapper(包名)+UserMapper
 -->
<mapper namespace="czz.study.mapper.UserMapper">

    <resultMap id="User" type="czz.study.domain.User">
        <id property="id" column="id" javaType="java.lang.Integer"></id>
        <result property="userName" column="name" javaType="java.lang.String"></result>
        <result property="age" column="age" javaType="java.lang.Integer"></result>
    </resultMap>


    <!--根据id查询得到一个user对象-->
    <select id="getUser" parameterType="int" resultMap="User">
        select * from c_user where id = #{id}
    </select>
    <!--新增一个新的用户-->
    <insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
        insert into c_user (name,age) values (#{userName},#{age})
    </insert>
    <!--更新id对应的用户信息-->
    <update id="updateUser">
      update c_user set name=#{user.userName},age=#{user.age} where id=#{id}
    </update>
    <!--删除id对应的用户信息-->
    <delete id="deleteUser" parameterType="int">
     delete from c_user where id=#{id}
    </delete>

</mapper>

8、在conf.xml注册userMapper.xml

秩序在conf.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="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="Jovaunn1"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <!--告知映射文件方式1,一个一个的配置-->
        <mapper resource="mapperXml/userMapper.xml"/>

        <!-- 告知映射文件方式2,自动扫描包内的Mapper接口与配置文件
         注意:此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。-->
        <!--<package name="czz.study.mapper"/>-->
        
        <!--告知映射文件方式3,一个一个的配置-->
        <!--注意:此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。-->
        <!--<mapper class="czz.study.mapper.UserMapper"/>-->
    </mappers>

</configuration>

9、创建SqlSessionFactory工具类

package czz.study.factory;

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.Reader;

public class MybatisFactory {
    
    public static SqlSessionFactory sessionFactory;
    
    static {
        try {
            //使用MyBatis提供的Resources类加载mybatis的配置文件
            InputStream inputStream = Resources.getResourceAsStream("conf.xml");
            //构建sqlSession的工厂
            sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    /**
     * 获取SqlSession
     */
    public static SqlSession getSession() {
        
        return sessionFactory.openSession();
    }
}

10、代码测试

在main方法中测试增删改查功能

package czz.study;

import czz.study.domain.User;
import czz.study.factory.MybatisFactory;
import czz.study.mapper.UserMapper;
import org.apache.ibatis.session.SqlSession;

/**
 * Hello world!
 */
public class App {
    
    public static void main(String[] args) {
        
        SqlSession sqlSession = MybatisFactory.getSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        
        User insertUser = new User();
        insertUser.setName("小花");
        insertUser.setAge(33);
        userMapper.insertUser(insertUser);
        sqlSession.commit();
        System.out.println("新增用户id:" + insertUser.getId());
        System.out.println("----------------------------------------------------------------");
        User user = userMapper.getUser(insertUser.getId());
        System.out.println("查询用户信息:" + user);
        System.out.println("----------------------------------------------------------------");
        User updateUser = new User();
        updateUser.setName("小黑");
        updateUser.setAge(44);
        userMapper.updateUser(insertUser.getId(), updateUser);

        System.out.println("查询更新后的用户信息:" + userMapper.getUser(insertUser.getId()));
        sqlSession.commit();
        System.out.println("----------------------------------------------------------------");
        userMapper.deleteUser(insertUser.getId());
        sqlSession.commit();

        System.out.println("删除用户后查询结果:" + userMapper.getUser(insertUser.getId()));
        sqlSession.close();

    }
}

以上,就是Mybatis最基本的用法,Mybatis其他功能和注意事项之后继续补充。放上某一次运行的结果。

猜你喜欢

转载自blog.csdn.net/chenzz2560/article/details/84785302