码迷,mamicode.com
首页 > 其他好文 > 详细

Mybatis

时间:2018-09-16 16:08:56      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:--   string   大量   varchar   close   enc   外部   maven依赖   配置   

Mybatis

1、mybatis介绍

mybatis是sqlmap技术,对jdbc进行封装,将大量的sql语句外部化。

2、体验mybatis

  1. 准备数据库和表

    mysql>create table users(id int primary key auto_increment , 
                             name varchar(20) , 
                             age int) ;
  2. 创建模块引入maven依赖

    [pom.xml]

    <?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>com.oldboy</groupId>
      <artifactId>mybatis</artifactId>
      <version>1.0-SNAPSHOT</version>
    
      <dependencies>
        <!-- mysql驱动 -->
        <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>5.1.17</version>
        </dependency>
        <!--junit单元测试-->
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.11</version>
        </dependency>
        <!-- mybatis类库 -->
        <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis</artifactId>
          <version>3.2.1</version>
        </dependency>
      </dependencies>
    </project>
  3. 创建javabean

    /**
     * User类
     */
    public class User {
      private Integer id;
      private String name ;
      private int age ;
    
      //get//set
    }
  4. 创建映射文件

    [resources/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">
    <!-- 定义名字空间 -->
    <mapper namespace="users">
      <!-- 定义insert语句 ,获得生成的id字段-->
      <insert id="insert" >
        insert into users(name,age) values(#{name},#{age})
      </insert>
    </mapper>
  5. 创建配置文件

    [resources/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>
      <properties>
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/big12"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
      </properties>
      <environments default="development">
        <environment id="development">
          <transactionManager type="JDBC"/>
          <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="UserMapper.xml"/>
      </mappers>
    </configuration>
    
  6. 编写测试类,实现插入

@Test
public void testInsert() throws IOException {
//加载配置文件
InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
//创建会话工厂(builder模式)
SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(in);
//开启会话,相当于连接
SqlSession sess = sf.openSession();

User u = new User() ;
u.setName("tom");
u.setAge(12);
//执行插入操作
sess.insert("users.insert" , u) ;
sess.commit();
sess.close();
}

3、实现mybatis的基本操作

3.1 update

  1. 在映射文件中增加update语句

    <?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="users">
      <update id="update">
        update users set name = #{name} , age = #{age} where id = #{id}
      </update>
    </mapper>
  2. 调用session.update方法

    ...
    User u = new User() ;
    u.setName("tomas");
    u.setAge(22);
    u.setId(1);
    sess.update("users.update" , u) ;

3.2 select

3.2.1 查询一个
  1. 映射文件增加查询语句

    [userMapper.xml]

    ...
    <select id="selectById" resultType="_User">
      select * from users where id = #{id}
    </select>
    ...
  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">
    <configuration>
      ...
      <typeAliases>
        <typeAlias type="com.oldboy.mybatis.domain.User" alias="_User"/>
      </typeAliases>
      ...
    </configuration>

    ?

  3. API调用

    User u = sess.selectOne("users.selectById" , 1) ;
3.2.2 查询多个
  1. 添加sql语句

    [userMapper.xml]

    ...
    <select id="selectAll" resultType="_User">
      select * from users
    </select>
    ...
  2. API调用

    List<User> list = sess.selectList("users.selectAll" ) ;

3.3 delete

  1. 添加sql语句

    [UserMapper.xml]

    ...
    <delete id="delete">
      delete from users where id = #{id}
    </delete>
    ...
  2. API调用

    sess.delete("users.delete" , 1) ;

4、获取数据库主键值

数据表如果主键是自动增长的话,如果要在程序插入时得到主键值可修改映射文件,具体如下:

[userMapper.xml]

<insert id="insert" useGeneratedKeys="true" keyProperty="id">
  ...
</insert>

Mybatis

标签:--   string   大量   varchar   close   enc   外部   maven依赖   配置   

原文地址:https://www.cnblogs.com/xupccc/p/9655343.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!