zoukankan      html  css  js  c++  java
  • MyBatis入门(一)SqlSessionFactory

    (1)新建数据库

    1 CREATE TABLE emp (
    2     id INT ( 10 ) PRIMARY KEY auto_increment,
    3     last_name VARCHAR(255),
    4     gender CHAR(1),
    5     email VARCHAR(255)    
    6 )

    (2)输入数据

    INSERT INTO emp VALUES(1,"张三","男","we.com");

        

    (3)新建项目

        

    (4)导入Jar包

        

    (5)编写log4j

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
     3  
     4 <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
     5  
     6  <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
     7    <param name="Encoding" value="UTF-8" />
     8    <layout class="org.apache.log4j.PatternLayout">
     9     <param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m  (%F:%L) 
    " />
    10    </layout>
    11  </appender>
    12  <logger name="java.sql">
    13    <level value="debug" />
    14  </logger>
    15  <logger name="org.apache.ibatis">
    16    <level value="info" />
    17  </logger>
    18  <root>
    19    <level value="debug" />
    20    <appender-ref ref="STDOUT" />
    21  </root>
    22 </log4j:configuration>

    (6)编写实体类

     1 public class Emp {
     2 
     3     private Integer id;
     4     private String lastName;
     5     private String geder;
     6     private String email;
     7     public Emp() {
     8         super();
     9     }
    10     public Emp(Integer id, String lastName, String geder, String email) {
    11         super();
    12         this.id = id;
    13         this.lastName = lastName;
    14         this.geder = geder;
    15         this.email = email;
    16     }
    17     public Integer getId() {
    18         return id;
    19     }
    20     public void setId(Integer id) {
    21         this.id = id;
    22     }
    23     public String getLastName() {
    24         return lastName;
    25     }
    26     public void setLastName(String lastName) {
    27         this.lastName = lastName;
    28     }
    29     public String getGeder() {
    30         return geder;
    31     }
    32     public void setGeder(String geder) {
    33         this.geder = geder;
    34     }
    35     public String getEmail() {
    36         return email;
    37     }
    38     public void setEmail(String email) {
    39         this.email = email;
    40     }
    41     @Override
    42     public String toString() {
    43         return "Emp [id=" + id + ", lastName=" + lastName + ", geder=" + geder + ", email=" + email + "]";
    44     }

    (7)编写MyBatis的配置文件

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE configuration
     3   PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
     4   "http://mybatis.org/dtd/mybatis-3-config.dtd">
     5 <configuration>
     6   <environments default="development">
     7     <environment id="development">
     8       <transactionManager type="JDBC"/>
     9       <dataSource type="POOLED">
    10         <property name="driver" value="com.mysql.jdbc.Driver"/>
    11         <property name="url" value="jdbc:mysql://localhost:3306/MyBatis"/>
    12         <property name="username" value="root"/>
    13         <property name="password" value="root"/>
    14       </dataSource>
    15     </environment>
    16   </environments>
    17   <mappers>
    18     <mapper resource="conf/EmpMapper.xml"/>
    19   </mappers>
    20 </configuration>

    (8)编写Mapper文件EmpMapper.xml

    1 <?xml version="1.0" encoding="UTF-8" ?>
    2 <!DOCTYPE mapper
    3   PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    4   "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    5 <mapper namespace="conf.EmpMapper">
    6   <select id="selectEmp" resultType="com.eu.pojo.Emp">
    7     select id,last_name lastName,gender,email from Emp where id = #{id}
    8   </select>
    9 </mapper>

    (9)编写测试类

     1   @Test
     2     public  void testMapper() throws IOException {
     3         String resource = "conf/mybatis-config.xml";
     4         InputStream inputStream = Resources.getResourceAsStream(resource);
     5         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
     6         
     7         SqlSession session = sqlSessionFactory.openSession();
     8         try {
     9           Emp emp = (Emp) session.selectOne("conf.EmpMapper.selectEmp", 1);
    10           System.out.println(emp);
    11         } finally {
    12           session.close();
    13         }
    14     }

    (10)测试结果

    1 DEBUG 04-14 19:20:32,007 ==>  Preparing: select id,last_name lastName,gender,email from Emp where id = ?   (BaseJdbcLogger.java:145) 
    2 DEBUG 04-14 19:20:32,073 ==> Parameters: 1(Integer)  (BaseJdbcLogger.java:145) 
    3 DEBUG 04-14 19:20:32,107 <==      Total: 1  (BaseJdbcLogger.java:145) 
    4 Emp [id=1, lastName=张三, geder=null, email=we.com]

     这种方式还存在缺陷,

     Emp emp = (Emp) session.selectOne("conf.EmpMapper.selectEmp", 1);

    如果传入一个字符呢?如何查?所以必须限制传入的是合法的数字。针对这种方式进行了修改,见下一篇 MyBatis入门(二)接口式编程
  • 相关阅读:
    【进阶指南学习笔记】lowbit
    POJ2288 Islands and bridges 【状态压缩,计数】
    POJ1995 Raising Modulo Numbers 快速幂
    CH0103 最短Hamilton路径 状态压缩
    【转载】bitset的用法 by 自为风月马前卒
    pytorch | A 60 MINUTE BLITZ 代码+详细注释
    NOI2019 游记
    十二省联考2019 游记
    python 从其他文件中引用函数
    HDU 6231 K-th Number
  • 原文地址:https://www.cnblogs.com/wanerhu/p/10707531.html
Copyright © 2011-2022 走看看