MyBatis基于Maven的入门

Stella981
• 阅读 808

主要内容如下: 

  1. myBatis在maven中的配置  
  2. myBatis在工程中的config配置文件
  3. myBatis为Bean和表的映射文件
  4. myBatis基本的使用

 

  • myBatis在maven中的配置,在pom.xml中增加内容

         1. 增加依赖 , mybatis的,还有mysql的驱动的,servlet的, 以及junit的

        <dependency>            <!-- mybatis的依赖 -->
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.2.8</version>
        </dependency>

        <dependency>       <!-- mysql的驱动的依赖 -->
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.0.1</version>
            <scope>provided</scope> <!-- 只在编译时和测试时运行的依赖 -->
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>

            2.增加插件

            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.2</version>
                <configuration>
                    <verbose>true</verbose>
                    <overwrite>true</overwrite>
                </configuration>
            </plugin>
  • myBatis在工程中的config配置文件,在java代码的根目录下创建mybatis-config.xml

         1. jdbc需要的配置文件:

username=wxn
password=wxn123
url=jdbc:mysql://localhost:3306/simple_shop
driver=com.mysql.jdbc.Driver

         2. 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">
    
    <!--  1. 配置数据库的配置 -->
<configuration>
    <properties resource="jdbc.properties" />
    <typeAliases> <!-- 这一条配置必须在properties和settings配置之后 -->
         <!--为bean的映射文件中的入参出参指定别名,则入参可以不用输入类的全名称了 -->
         <typeAlias type="cn.feezu.wxn.domain.User" alias="User"/>
    </typeAliases>
    <environments default="development">  <!-- 环境可以配置多个,以便不同需要时可以任意切换 -->
        <environment id="development">
            <!--  事务管理 -->
            <transactionManager type="JDBC"></transactionManager>
            <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>    
    <mappers>  <!-- 指定映射文件的路径位置 -->
        <mapper resource="cn/feezu/wxn/domain/User.xml"/>
    </mappers>
</configuration>
  •  myBatis为Bean和表的映射文件

        1.假设已经创建了一个javabean 为User

package cn.feezu.wxn.domain;

import java.util.List;

public class User {
    private int id;
    private String username;
    private String password;
    private String nickname;
    private int type;
    
    //不做一这一方的映射
    private List<Address> addresses;
    
    //setter 和 getter  ..........
}

     2.而且已经存在一个数据库simple_shop, 以及表s_user,如下是sql语句

drop database if exists simple_shop;
create database simple_shop;
grant all on simple_shop.* to 'wxn'@'localhost';
## 密码是wxn123
use simple_shop;

create table s_user(
    id int(11) primary key auto_increment,
    username varchar(100),
    password varchar(100),
    nickname varchar(100),
    type int(5)
);

create table s_address(
    id int(11) primary key auto_increment,
    name varchar(255),
    phone varchar(100),
    postcode varchar(100),
    reciver varchar(100),
    user_id int(11),
    constraint foreign key (user_id) references s_user(id)
);

     3. 在User.java的同目录中创建一个User.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">

<mapper namespace="cn.feezu.wxn.domain.User"> <!-- 这里指定namespace名同javabean -->
<!--<mapper namespace="cn.feezu.wxn.mapper.UserMapper"> --><!-- 使用Mapper接口 -->
    <!-- 这里的入参为User,使用的是config文件中指定的别名 -->
    <insert id="add" parameterType="User">
        insert into s_user(username,
        password, nickname, type)
        value(#{username}, #{password}, #{nickname},
        #{type});
    </insert>

    <update id="update" parameterType="User">
        update s_user set
        password=#{password}, nickname=#{nickname},
        username=#{username},
        type=#{type}
    </update>

    <delete id="delete" parameterType="Integer">
        delete from s_user where
        id=#{id};
    </delete>
    <!-- 这里的出参为User,使用的是config文件中指定的别名 -->
    <select id="select" parameterType="int" resultType="User">
        select * from
        s_user where id=#{id};
    </select>
</mapper>
  • myBatis基本的使用

        1. MyBatis使用SqlSession来控制事务,而SqlSession需要使用工厂模式创建,而SqlSession工厂的创建需要mybatis的配置文件作为资源来构建,抽取这个过程,得到一个MyBatisUtils的工具类.

package cn.feezu.wxn.utils;

import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MyBatisUtil {
    private static SqlSessionFactory factory;
    static{
        try {
            InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");
            factory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    public static SqlSession openSession(){
        return factory.openSession();
    }
    
    public static void closeSession(SqlSession session){
        if (session != null) {
            session.close();            
        }
    }
}

    2. 那么创建测试方法来检验mybatis的配置是否生效

    @Test
    public void testUserAdd() {
        SqlSession session = null;
        try {
            session = MyBatisUtil.openSession();
            // 调用mapper文件插入数据,调用之前需要将mapper文件配置到mybatis-config.xml文件中
            User user = new User();
            user.setNickname("大刀王五");
            user.setPassword("123123");
            user.setUsername("wangwu");
            user.setType(1);
            //注意insert方法第一个参数
            //session.insert("cn.feezu.wxn.domain.User.add", user);
            session.insert(User.class.getName() + ".add", user);
            session.commit();  //提交事务
        } catch (Exception e) {
            e.printStackTrace();
            session.rollback(); // 事务提交失败,回滚
        } finally {
            MyBatisUtil.closeSession(session); //关闭session
        }
    }

     3. 使用Mapper接口

        1.对应User.xml中的增删改查,可以创建对应的Mapper接口,UserMapper.java,而不需要实现

package cn.feezu.wxn.mapper;

import cn.feezu.wxn.domain.User;

/**
 * 为User.xml增加接口方法
 * @author wangxn
 *
 */
public interface UserMapper {

    public void add(User user);
    
    public void update(User user);
    
    public void delete(Integer id);
    
    public User select(int id);
}

      2. 创建了接口之后, 那么在javabean的映射文件中就可以替换mapper标签为中的namespace为Mapper接口了,其他配置不变

<mapper namespace="cn.feezu.wxn.mapper.UserMapper">

     3. 在代码中使用时,就可以不直接使用session了,而是用Mapper来处理,好处是不用使用字符串传参防止出错了

    @Test
    public void testUserAdd(){
        SqlSession session = null;
        try {
            session = MyBatisUtil.openSession();
            
            User user = new User();
            user.setUsername("zhangfei");
            user.setNickname("zhangyide");
            user.setPassword("123123");
            user.setType(2);
            
            session.getMapper(UserMapper.class).add(user);
            
            session.commit();
        } catch (Exception e) {
            e.printStackTrace();
            session.rollback();
        } finally {
            MyBatisUtil.closeSession(session);
        }
    }
点赞
收藏
评论区
推荐文章
执键写春秋 执键写春秋
3年前
基于Maven工程下的MyBatis基本使用之SQL传单/多参、多表关联查询
MyBatis基本使用声明:基于《基于Maven工程下的MyBatis框架MySQL连接池的数据查询操作》进一步拓展,相关配置文件、数据文件可阅上篇。SQL传单/多参在goods.xml新增两个<select:<!单参数传参,使用paramterType指定的数据类型即可,SQL中value提取参数<selectid"sel
执键写春秋 执键写春秋
3年前
基于Maven工程下的MyBatis基本使用之数据插入【回填】、修改与删除
MyBatis基本使用声明:基于《基于Maven工程下的MyBatis框架MySQL连接池的数据查询操作》与《基于Maven工程下的MyBatis基本使用之SQL传单/多参、多表关联查询》进一步拓展,相关配置文件、数据文件可阅以上两篇。数据插入<insert,使用<selectKey进行回填自动生成主键值<!需要明确编写获取最新主键的SQL语句<in
Easter79 Easter79
3年前
springcloud+jps+mybatis多数据库配置
1.多数据库配置配置我们目录结构设置:config datasource\jpa\mybatis\redis Datasource中是数据的相关配置Jap中是springDatajpa的相关配置Mybatis中是mybatis的相关配置Redis中是redis的相关配置如果还有其他
Stella981 Stella981
3年前
Intellij IDEA中使用MyBatis
1、IDEA创建maven工程(略)2、在maven项目的pom.xml添加mybatisgeneratormavenplugin插件和MySQL数据库驱动依赖<build <plugins  <plugin   <groupIdorg.mybatis.generato
Easter79 Easter79
3年前
SSM_基于传统web项目
1.这是一个单模块的项目!有四个配置文件,mybaits,spring。springmvc,web.xml!2.web.xml配置文件,导入spring和springmvc的配置文件,spring配置文件中,获取sqlsession,以及关联mybatis的mpper(增删改查)文件3.mybatis的配置文件则可以不用写
Stella981 Stella981
3年前
MybatisPlus知识详解以及用十数个例子完成MybatisPlus的入门到进阶
1\.MybatisPlus1.1业务需求Mybatis缺点:1.Mybatis操作数据库的过程中,需要编辑大量的sql语句.无论该sql是否复杂或者简单.2.Mybatis操作时在xml配置文件中需要额外记忆单独的标签.需求:能否实现单表操作的CRUD的全自动的实现.能否实现
Stella981 Stella981
3年前
SpringBoot集成mybatis以及自动化测试代码实现
Mybatis和logback的应用配置1、在module的pom.xml文件中,加载springboot和swagger、lombok、fastjson、mysql、mybatis包2、在resources中添加配置:配置文件有两种,一种是properties,另一种是yaml,这里使用yamlyaml配
Stella981 Stella981
3年前
SSM_基于传统web项目
1.这是一个单模块的项目!有四个配置文件,mybaits,spring。springmvc,web.xml!2.web.xml配置文件,导入spring和springmvc的配置文件,spring配置文件中,获取sqlsession,以及关联mybatis的mpper(增删改查)文件3.mybatis的配置文件则可以不用写
Stella981 Stella981
3年前
Mybatis PageHelper 简单使用
流程1,maven依赖2,在mybatis配置文件启用插件3,修改service层依赖<!https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper<dependency<groupIdc
Easter79 Easter79
3年前
SpringBoot集成mybatis以及自动化测试代码实现
Mybatis和logback的应用配置1、在module的pom.xml文件中,加载springboot和swagger、lombok、fastjson、mysql、mybatis包2、在resources中添加配置:配置文件有两种,一种是properties,另一种是yaml,这里使用yamlyaml配