2.mybatis入门实例(一) 连接数据库进行查询

1.新建项目,添加mybatis和mysql的jar包

2.在mysql中新建表user[id,name,age]

CREATE TABLE `users` (
   `id` int(11) NOT NULL auto_increment,
   `NAME` varchar(50) default NULL,
   `age` int(11) default NULL,
   PRIMARY KEY  (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8

3.新建User类,与db的表对应

public class User {

    public User() {
    }
    public User(int id, String name, int age) {
        super();
        this.id = id;
        this.name = name;
        this.age = age;
    }
    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;
    }
    @Override
    public String toString() {
        return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
    }

}

4.在src目录下面新建mybatis的配置文件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>
    <!--
        development:开发模式
        work:工作模式
     -->
    <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?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=utf8" />
                <property name="username" value="root" />
                <property name="password" value="root" />
            </dataSource>
        </environment>
    </environments>

</configuration>

5.新建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的标签,在此要在Window-Preference-Xml Catalog中配置mybatis-3-mapper.dtd,
    key=-//mybatis.org//DTD Mapper 3.0//EN
 -->
<mapper namespace="com.mlxs.mybatis.test.userMapper">

    <select id="getUser" parameterType="int" resultType="com.mlxs.mybatis.test1.User">
        select * from users where id=#{id}
    </select>

    <!-- 添加,参数是一个user对象 -->
    <insert id="addUser" parameterType="com.mlxs.mybatis.test1.User">
        insert into users(name,age) values(#{name},#{age})
    </insert>
    <!-- 更新,参数是一个user对象 -->
    <insert id="updateUser" parameterType="com.mlxs.mybatis.test1.User">
        update users set name=#{name}, age=#{age} where id=#{id}
    </insert>
    <!-- 添加,参数是一个user对象 -->
    <insert id="deleteUser" parameterType="int">
        delete from users where id=#{id}
    </insert>

    <!-- 返回一个list,resultType="包名+类名":必须在类中有个无参的构造函数,不然会报错:
            java.lang.NoSuchMethodException: com.mlxs.mybatis.test1.User.<init>()
            Caused by: java.lang.NoSuchMethodException: com.mlxs.mybatis.test1.User.<init>()
            at java.lang.Class.getConstructor0(Class.java:2706)
            at java.lang.Class.getDeclaredConstructor(Class.java:1985)
            at org.apache.ibatis.reflection.factory.DefaultObjectFactory.instantiateClass(DefaultObjectFactory.java:57)
    -->
    <select id="selectAllUsers" resultType="com.mlxs.mybatis.test1.User">
        select * from users
    </select>
</mapper>

将mapper配置文件添加到mybatis的配置文件conf.xml的mappers标签中:

<!-- 在conf.xml文件中注册Mapper.xml文件和Mapper类 -->
    <mappers>
        <mapper resource="com/mlxs/mybatis/test1/userMapper.xml" />

    </mappers>

6.添加测试类,获取一个user的信息

import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;

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 _Test1SelectOne {
    public static void main(String[] args) throws IOException {
        //加载mybatis的xml文件(同时加载加载关联的映射文件)
        //1.使用类加载器加载mybatis的配置文件
//        InputStream config = _Test1SelectOne.class.getClassLoader().getResourceAsStream("conf.xml");
        //2.使用mybatis的Resources类加载
        Reader config = Resources.getResourceAsReader("conf.xml");
        //创建sqlSessionFactory
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(config);
        //创建sqlSession,执行mapper.xml中的sql语句
        SqlSession sqlSession = sessionFactory.openSession();
        //执行映射文件中的sql(namespace + select的id)
        String sql = "com.mlxs.mybatis.test.userMapper.getUser";
        User user = sqlSession.selectOne(sql, "1");//查询id=1
        //关闭session
        sqlSession.close();
        System.out.println(user);
    }
}

7.结果

User [id=1, name=Tom, age=12]

8.测试 增删改查,导入junit包,添加测试类

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.Test;

import com.mlxs.mybatis.util.MyBatisUtil;

public class _Test2UserCrud {

    @Test
    public void addUser(){
        SqlSessionFactory sessionFactory = MyBatisUtil.getSessionFactory();
        SqlSession sqlSession = sessionFactory.openSession();
        String statement = "com.mlxs.mybatis.test.userMapper.addUser";
        int count = sqlSession.insert(statement, new User(0, "add1", 10));
        sqlSession.commit();
        sqlSession.close();
        System.out.println("add count:"+count);
    }
    @Test
    public void updateUser(){
        SqlSessionFactory sessionFactory = MyBatisUtil.getSessionFactory();
        SqlSession sqlSession = sessionFactory.openSession();
        String statement = "com.mlxs.mybatis.test.userMapper.updateUser";
        int count = sqlSession.update(statement, new User(3, "update2", 100));
        sqlSession.commit();
        sqlSession.close();
        System.out.println("update count:"+count);
    }
    @Test
    public void delUser(){
        SqlSessionFactory sessionFactory = MyBatisUtil.getSessionFactory();
        boolean autoCommit = true;//自动提交,不需手动commit
        SqlSession sqlSession = sessionFactory.openSession(autoCommit);
        String statement = "com.mlxs.mybatis.test.userMapper.deleteUser";
        int count = sqlSession.delete(statement, 4);
        sqlSession.close();
        System.out.println("del count:"+count);
    }
    @Test
    public void selectAll(){
        SqlSessionFactory sessionFactory = MyBatisUtil.getSessionFactory();
        boolean autoCommit = true;//自动提交,不需手动commit
        SqlSession sqlSession = sessionFactory.openSession(autoCommit);
        String statement = "com.mlxs.mybatis.test.userMapper.selectAllUsers";
        List<User> userList = sqlSession.selectList(statement);
        sqlSession.close();
        System.out.println(userList);
    }
}
时间: 2024-12-22 20:57:44

2.mybatis入门实例(一) 连接数据库进行查询的相关文章

Mybatis入门实例

第一步:创建项目导入jar包 第二步:建表: CREATE TABLE `person` ( `ID` int(10) NOT NULL AUTO_INCREMENT, `NAME` varchar(10) DEFAULT NULL, `GENDER` int(10) DEFAULT NULL, `ADRESS` varchar(50) DEFAULT NULL, `BIRTHDAY` date DEFAULT NULL, PRIMARY KEY (`ID`) ) ENGINE=InnoDB A

Mybatis入门实例(三)——使用MyBatis Generator生成DAO(转载http://qiuqiu0034.iteye.com/blog/1163026)

接上回 http://qiuqiu0034.iteye.com/blog/1162952 虽然MyBatis很方便,但是想要手写全部的mapper还是很累人的,好在MyBatis官方推出了自动化工具,可以根据数据库和定义好的配置直接生成DAO层及以下的全部代码,非常方便. 需要注意的是,虽然自动化工具需要一个配置文件,但是MyBatis的配置文件仍然不能少,自动化工具的配置文件用于对生成的代码的选项进行配置,MyBatis的配置文件才是运行时的主要配置文件. 这个工具叫做MyBatis_Gene

Mybatis入门实例(二)——添加ehcache缓存支持

为了提高MyBatis的性能,有时候我们需要加入缓存支持,目前用的比较多的缓存莫过于ehcache缓存了,ehcache性能强大,而且位各种应用都提供了解决方案,在此我们主要是做查询缓存,提高查询的效率. 在Mybatis的官网上把集成ehcache的文档下载下来看了看,说的太简单了,对于新手很难理解,而且里面说的也不是很清楚,经过一番折腾,终于将ehcache加入了. 官网上提供了一个MyBatis-ehcache.jar的包用于整合ehcache缓存,文档中还说明需要一个ehcache-co

mybatis入门案例分析

mybatis入门案例分析 一.设计模式分析 public class MybatisTest { public static void main(String[] args) throws Exception{ //1.读取配置文件 InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml"); //2.创建SqlSessionFactory工厂 SqlSessionFactoryBuilder builder

mybatis入门(四)

mybatis入门 需求:根据id查询用户的信息 mysql数据库: CREATE TABLE `user` (  `id` int(11) NOT NULL AUTO_INCREMENT,  `username` varchar(32) NOT NULL COMMENT '用户名称',  `birthday` date DEFAULT NULL COMMENT '生日',  `sex` char(1) DEFAULT NULL COMMENT '性别',  `address` varchar(

mybatis 详解(二)------入门实例(基于XML)

通过上一小节,mybatis 和 jdbc 的区别:http://www.cnblogs.com/ysocean/p/7271600.html,我们对 mybatis有了一个大致的了解,下面我们通过一个入门实例来对mybatis有更近一步的了解. 我们用 mybatis 来对 user 表进行增删改查操作. ps:本篇博客源代码链接:http://pan.baidu.com/s/1eSEfc8i密码:j480 1.创建MySQL数据库:mybatisDemo和表:user 这里我们就不写脚本创建

mybatis 详解(三)------入门实例(基于注解)

1.创建MySQL数据库:mybatisDemo和表:user 详情参考:mybatis 详解(二)------入门实例(基于XML) 一致 2.建立一个Java工程,并导入相应的jar包,具体目录如下 详情参考:mybatis 详解(二)------入门实例(基于XML) 一致 3.在 MyBatisTest 工程中添加数据库配置文件 mybatis-configuration.xml 详情参考:mybatis 详解(二)------入门实例(基于XML) 一致 4.定义表所对应的实体类 详情

Mybatis入门(三)——实例(一)

Mybatis入门(三) 数据库 public class Student { private String sno; public String getSno() { return sno; } public void setSno(String sno) { this.sno = sno; } public String getsName() { return sName; } public void setsName(String sName) { this.sName = sName;

Mybatis入门学习篇(三)之模糊查询的两种写法

在上一讲(Mybatis入门学习篇(二)之基于注解的增删改查)中,需要用到模糊查询,比如我想查找所有含有'zjh'的Student的信息.如果是在数据库中,那么我们可以方便的使用通配符%:select * from student where name like '%zjh%' .但是如果在mybatis中直接像sql中那样,就会报错.遂百度,无果,偶然在一篇帖子中看到,遂记录下来,以备后用. 方法一: 在要查询的字符串合适位置加上%,如这里的'zjh'就应该为'%zjh%'.这是一个很管用的方