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演变过来的程序,主要是抄的网上的代码,能更好的思考运行原理和机制

  • 相关阅读:
    git pull 解决 refusing to merge unrelated histories 错误
    springboot 集成 jpa/hibernate
    hibernate(*.hbm.xml)中新添加的字段被标记为红色(找不到)的解决方法
    IntelliJ IDEA下自动生成Hibernate映射文件以及实体类
    HighGUI图形图像界面初步—— 图像的载入、显示与输出
    0_OpenCV3.4.0+Visual Studio2017 + win10环境配置
    5_Longest Palindromic Substring(Manacher) --LeetCode
    3_Longest Substring Without Repeating Characters -- LeetCode
    vs2017密钥
    2_基于深度学习的目标检测识别算法
  • 原文地址:https://www.cnblogs.com/hellowzd/p/5003270.html
Copyright © 2011-2022 走看看