zoukankan      html  css  js  c++  java
  • 我的第7个java程序--把java web项目改为java project项目--mybatis

    连接数据库需要

    程序,连接字符串,查询语句

    主程序-》读取连接字符串-》读取查询语句-》把查询到的值赋值给映射对象-》打印对象属性

    java project的好处,不用做那么多配置,想到什么就去干,用来学习比较快

    入口文件 HelloWorld.java

    package HelloWorld;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.Reader;
    import HelloWorld.User;
    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 HelloWorld {
         public static void main(String[] args) throws IOException {
                //mybatis的配置文件
                String resource = "conf.xml";
               
                //使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)
                InputStream is = HelloWorld.class.getClassLoader().getResourceAsStream(resource);
                
                //构建sqlSession的工厂
                SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
                //使用MyBatis提供的Resources类加载mybatis的配置文件(它也加载关联的映射文件)
                //Reader reader = Resources.getResourceAsReader(resource); 
                //构建sqlSession的工厂
                //SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
                //创建能执行映射文件中sql的sqlSession
                SqlSession session = sessionFactory.openSession();
                /**
                 * 映射sql的标识字符串,
                 * me.gacl.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,
                 * getUser是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL
                 */
                String statement = "HelloWorld.userMapper.getUser";//映射sql的标识字符串
                
                //执行查询返回一个唯一user对象的sql
                User user = session.selectOne(statement, 1);
    
                System.out.println(user);
            }
    }

    映射文件 User.java

    package HelloWorld;
    
    /**
     * @author gacl
     * users表所对应的实体类
     */
    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;
        }
    
        @Override
        public String toString() {
            return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
        }
    }

    查询语句 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,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的
    例如namespace="me.gacl.mapping.userMapper"就是me.gacl.mapping(包名)+userMapper(userMapper.xml文件去除后缀)
     -->
    <mapper namespace="HelloWorld.userMapper">
        <!-- 在select标签中编写查询的SQL语句, 设置select标签的id属性为getUser,id属性值必须是唯一的,不能够重复
        使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型
        resultType="me.gacl.domain.User"就表示将查询结果封装成一个User类的对象返回
        User类就是users表所对应的实体类
        -->
        <!-- 
            根据id查询得到一个user对象
         -->
        <select id="getUser" parameterType="int" 
            resultType="HelloWorld.User">
            select * from users where id=#{id}
        </select>
    </mapper>

    连接字符串 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="root" />
                 </dataSource>
             </environment>
         </environments>
         
         <mappers>
             <!-- 注册userMapper.xml文件, 
             userMapper.xml位于me.gacl.mapping这个包下,所以resource写成me/gacl/mapping/userMapper.xml-->
             <mapper resource="HelloWorld/userMapper.xml"/>
         </mappers>
         
     </configuration>

    目录结构

    sql语句(数据库一定要和连接字符串照应)

    -- phpMyAdmin SQL Dump
    -- version phpStudy 2014
    -- http://www.phpmyadmin.net
    --
    -- 主机: localhost
    -- 生成日期: 2015 年 11 月 28 日 18:57
    -- 服务器版本: 5.5.38
    -- PHP 版本: 5.3.28
    
    SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
    SET time_zone = "+00:00";
    
    
    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8 */;
    
    --
    -- 数据库: `mybatis`
    --
    
    -- --------------------------------------------------------
    
    --
    -- 表的结构 `users`
    --
    
    CREATE TABLE IF NOT EXISTS `users` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `NAME` varchar(20) DEFAULT NULL,
      `age` int(11) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=gbk AUTO_INCREMENT=3 ;
    
    --
    -- 转存表中的数据 `users`
    --
    
    INSERT INTO `users` (`id`, `NAME`, `age`) VALUES
    (1, '孤傲苍狼', 27),
    (2, '白虎神皇', 27);
    
    /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
    /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
    /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

    效果

    这是一个从helloworld演变过来的程序,主要是抄的网上的代码,能更好的思考运行原理和机制

  • 相关阅读:
    HDU 1009 FatMouse' Trade
    HDU 2602 (简单的01背包) Bone Collector
    LA 3902 Network
    HDU 4513 吉哥系列故事——完美队形II
    LA 4794 Sharing Chocolate
    POJ (Manacher) Palindrome
    HDU 3294 (Manacher) Girls' research
    HDU 3068 (Manacher) 最长回文
    Tyvj 1085 派对
    Tyvj 1030 乳草的入侵
  • 原文地址:https://www.cnblogs.com/hellowzd/p/5003270.html
Copyright © 2011-2022 走看看