关闭

mybatis的简单使用

标签: java数据库mybatisjava web
183人阅读 评论(0) 收藏 举报
分类:

在java web工程中对于数据库的操作基本都是通过mybatis库操作的,下面就简单的介绍初步的使用过程。
首先我们建立了测试用的数据库mybatis:

create database mybatis;
use mybatis;
create table users(id int primary key auto_increment,name varchar(20),age int);
insert users(name,age) values ('句芒',100);
insert users(name,age) values ('帝江',200);

我们在这个新建的数据库中建立一个表users,然后插入两条数据。
对应的我们要在Java web工程中创建这个表对于的java类User,很多地方(主要是使用spring的时候)又叫它bean对象。这个java类的属性要与数据库中的字段对应:

package ServaceStudy;

public class User {
    private int id;
    private String name;
    private int age;

    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 int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}

操作数据库是需要使用sql语句的,下面我们需要创建users表对应的sql语句的xml文件,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="MyMapper.userMapper">
    <select id="getUser" parameterType="int" resultType="ServaceStudy.User">
    select *from users where id=#{id}
    </select>

</mapper>

mapper 标签的属性namespace的值一般是包名+xml文件名,作为命名空间的值。select 标签代表基本的sql语句增删改查中的查,id用于唯一标识这个sql语句,parameterType属性代表查找时传入参数的类型,resultType代表查找结果的返回类型,select *from users where id=#{id} 这是具体的查询语句,表示根据id查询对应的那条数据。
好了到这位置我们已经创建了三个元素:数据库中的一个表,表对应的java类,表对应的mapper文件。这三个元素现在是没有关系的,我们还需要更进一步的使它们产生关联。
在工程中我们需要创建一个xml文件用于管理mybatis在工程中的使用,这个文件大概要完成这些事情:指定连接到哪个数据库,注册表对应的mapper文件:

<?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://10.1.3.121:3306/mybatis" />
                 <property name="username" value="root" />
                 <property name="password" value="123456" />
             </dataSource>
         </environment>
     </environments>

     <mappers>
        <mapper resource="MyMapper/userMapper.xml"/>
     </mappers>

</configuration>

environments标签是环境的意思,这里指的是数据库连接的是生产环境还是开发环境,现在开发过程中一般都连接开发环境的,dataSource数据源标签这里会规定连接数据库的一些信息,driver这里会规定默认加载的架包路径,url设置连接数据库的地址,username和password分别是数据库的用户名和密码。
在mappers标签中会注册我们写的mapper文件如:<mapperresource="MyMapper/userMapper.xml"/>
resource 就是mapper文件的路径。
好了,到这里我们把需要做的前期工作已经完成了,下面写代码测试:

package ServaceStudy;

import java.io.InputStream;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class TestMybatis {
    public static String selectUserById(Integer id) {

        InputStream input = TestMybatis.class.getClassLoader().getResourceAsStream("conf.xml");

        String statement = "MyMapper.userMapper.getUser";

        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(input);
        SqlSession session = sessionFactory.openSession();

        User user = session.selectOne(statement,id);
        session.close();
        return user.getName();
    }
}
InputStream input = TestMybatis.class.getClassLoader().getResourceAsStream("conf.xml");

是使用类加载器加载mybatis的总的配置文件的,也可以使用其自带的类Resources类加载:Reader input = Resources.getResourceAsReader("conf.xml");

String statement = "MyMapper.userMapper.getUser";

这个是指明将要执行哪个mapper文件中的哪条sql语句。
下面获取SqlSession执行查询语句:

SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(input);
        SqlSession session = sessionFactory.openSession();

        User user = session.selectOne(statement,id);
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:42940次
    • 积分:811
    • 等级:
    • 排名:千里之外
    • 原创:38篇
    • 转载:0篇
    • 译文:0篇
    • 评论:5条
    最新评论