zoukankan      html  css  js  c++  java
  • 第三章.搭建MyBatis工程环境

    1.数据库的准备:

    数据库:

    create DATABASE mybatis;

    数据表:

    CREATE TABLE `user` (
    `id` int(10) NOT NULL AUTO_INCREMENT,
    `username` varchar(120) DEFAULT NULL,
    `password` varchar(50) DEFAULT NULL,
    `gender` varchar(10) DEFAULT NULL,
    `birthday` date DEFAULT NULL,
    PRIMARY KEY (`id`)
    )

    INSERT into user(id,username,password,gender,birthday)
    VALUES
    (1,'程花花','12345','男','1998-12-23'),
    (2,'李四','32145','',,'1997-03-07'),
    (3,'丽丽','76543','女','1996-01-05'),
    (4,'花花','128722','女','1998-10-24');

     

    到此数据库的准备工作已经完成,接下来是搭建工程环境。

     2.搭建工程环境(MyEclipse):

     在MyEclipse开发工具中创建新的一个web工程,命名为MyBatisFirstDemo

    创建工程

     

    工程目录:

    在lib文件夹下面,添加我们所需要的jar包:

     

    选中右键Build Path ->Add to Build Path

     所有的jar包已打包上传:

    链接:https://pan.baidu.com/s/1HSxt2WX03Mq4h9eYwPkpHg
    提取码:1w2h

    其他工程目录的详解:

     

    log4j.properties

    #Global logging configuration 
    # 在开发环境下日志级别要设成
    log4j.rootLogger = DEBUG, stdout
    # Console output...
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern =%5p [%t] - %m%n

     SqlMapConfig.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>
         <settings>
             <setting name="logImpl" value="LOG4J"/>
         </settings>
         <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_test?characterEnciding=utf-8"/>
                     <property name="username" value="root"/>
                     <property name="password" value="1234"/>
                 </dataSource>
             </environment>
             
         </environments>
         
         <!-- 配置UserMapper.xml的映射地址 -->
         <mappers>
             <mapper resource="sqlmap/UserMapper.xml"/>
         </mappers>
     </configuration>
    DataConnection .java
    public class DataConnection {
    
        //MyBatis配置文件
        private String resource = "SqlMapConfig.xml";
        private SqlSessionFactory sqlSessionFactory;
        private SqlSession sqlSession;
        
        public SqlSession getSqlSession() throws IOException{
            InputStream inputStream = Resources.getResourceAsStream(resource);
            //创建会话工厂
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            sqlSession = sqlSessionFactory.openSession();
            return sqlSession;
        }
    }
    User.java
    构造器(两个),setter&getter方法
    public class User implements Serializable{
    
        private int id;
        private String username;
        private String password;
        private String gender;
        private Date birthday;
    ...
    }

     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="test">
        <!-- id查询 -->
        <select id="findUserByid" parameterType="int" resultType="cn.com.mybatis.po.User" >
            select * from user where id=#{id}
        </select>
        
        
        <!-- 模糊查询 -->
        <select id="findUserByUsername" parameterType="java.lang.String" resultType="cn.com.mybatis.po.User">
            select * from user where username like '%${value}%' 
        </select>
        
        <!-- 添加数据 -->
        <insert id="insertUser">
            insert into user(username,password,gender,birthday)
            value(#{username},#{password},#{gender},#{birthday})
        </insert>
        
        <!-- drop -->
        <delete id="deleteUser" parameterType="java.lang.Integer">
            delete from user where id=#{id}
        </delete>
        
        <!-- update -->
        <update id="update" parameterType="cn.com.mybatis.po.User">
            update user set username=#{username} where id=#{id}
        </update>
    </mapper>
    MyBatisTest.java
    public class MyBatisTest {
            public DataConnection dataConn = new DataConnection();
          //根据id进行查询
            @Test
            public void TestSelect() throws IOException{
            SqlSession sqlSession = dataConn.getSqlSession();
            User user = sqlSession.selectOne("test.findUserByid",1);
            System.out.println("username:" + user.getUsername());
            System.out.println("password:" + user.getPassword());
            System.out.println("gender:" + user.getGender());
    
            System.out.println("birthday:" + user.getBirthday());
            sqlSession.close();
        }
            
            
            //模糊查询
            @Test
            public void TestFuzzySearch() throws IOException{
                SqlSession sqlSession = dataConn.getSqlSession();
                List<User> userList = sqlSession.selectList("test.findUserByUsername","");
                for (int i = 0; i < userList.size(); i++) {
                    User user  = userList.get(i);
                    System.out.println("name:" + user.getUsername());
                    System.out.println("password:" + user.getPassword());
                    System.out.println("gender:" + user.getGender());
                    System.out.println("birthday:" + user.getBirthday());
                }
                
                sqlSession.close();
            }
        
            //insert
            @Test
            public void TestInsert() throws IOException, ParseException{
                SqlSession sqlSessions = dataConn.getSqlSession();
                User user = new User();
                user.setUsername("嘉佳");
                user.setPassword("55555");
                user.setGender("");
    
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                user.setBirthday(sdf.parse("1992-03-15")); 
            
                
                
                sqlSessions.insert("test.insertUser",user);
                sqlSessions.commit();
                sqlSessions.close();
            }
            
     
         //delete

          @Test
          public void TestDrop() throws IOException{
            SqlSession sqlSession = dataConn.getSqlSession();
            sqlSession.delete("test.deleteUser",6);
            sqlSession.commit();
            sqlSession.close();
          }


    //update

          @Test
          public void Testupdate() throws IOException{
            SqlSession sqlSession = dataConn.getSqlSession();
            User user = new User();
            user.setId(1);
            user.setUsername("张花花");
            sqlSession.update("test.update", user);
            sqlSession.commit();
            sqlSession.close();
          }

    }

     注意:

    测试类的创建:是下图的JUnit,在测试的时候,每个测试类上面都需要写@Test,需要调用的方法不需要加@Test   

    方便开发中的测试,可以不写main方法

    对每个方法进行测试时可以进行单个测试,否则可能所有的测试都执行。

    首先双击选中测试的类,右击选择Run As 可以看到一个Junit Test点击即可进行测试

     1.根据id进行查询,此时查询到的单个记录

    控制台代码(部分)

    DEBUG [main] - Opening JDBC Connection
    DEBUG [main] - Created connection 1208736537.
    DEBUG [main] - Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@480bdb19]
    DEBUG [main] - ==>  Preparing: select * from user where id=? 
    DEBUG [main] - ==> Parameters: 4(Integer)
    DEBUG [main] - <==      Total: 1
    username:花花
    password:128722
    gender:女
    birthday:Sat Oct 24 00:00:00 CST 1998
    DEBUG [main] - Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@480bdb19]
    DEBUG [main] - Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@480bdb19]
    DEBUG [main] - Returned connection 1208736537 to pool.

    2.模糊查询,此时查询道德可能是多个记录

    控制台代码(部分)

    DEBUG [main] - Opening JDBC Connection
    DEBUG [main] - Created connection 331510866.
    DEBUG [main] - Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@13c27452]
    DEBUG [main] - ==>  Preparing: select * from user where username like '%花%' 
    DEBUG [main] - ==> Parameters: 
    DEBUG [main] - <==      Total: 2
    name:程花花
    password:12345
    gender:男
    birthday:Wed Dec 23 00:00:00 CST 1998
    name:花花
    password:128722
    gender:女
    birthday:Sat Oct 24 00:00:00 CST 1998
    DEBUG [main] - Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@13c27452]
    DEBUG [main] - Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@13c27452]

    3.insert 插入数据

    控制台代码(部分)

    DEBUG [main] - Opening JDBC Connection
    DEBUG [main] - Created connection 525571.
    DEBUG [main] - Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@80503]
    DEBUG [main] - ==>  Preparing: insert into user(username,password,gender,birthday) value(?,?,?,?) 
    DEBUG [main] - ==> Parameters: 嘉佳(String), 55555(String), 女(String), 1992-03-15 00:00:00.0(Timestamp)
    DEBUG [main] - <==    Updates: 1
    DEBUG [main] - Committing JDBC Connection [com.mysql.jdbc.JDBC4Connection@80503]
    DEBUG [main] - Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@80503]
    DEBUG [main] - Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@80503]

     数据库中:

     4.delete可见在3操作中成功添加数据id=6的嘉佳

    此时来测试删除该记录

     控制台代码(部分)

    DEBUG [main] - Created connection 198761306.
    DEBUG [main] - Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@bd8db5a]
    DEBUG [main] - ==>  Preparing: delete from user where id=? 
    DEBUG [main] - ==> Parameters: 6(Integer)
    DEBUG [main] - <==    Updates: 1
    DEBUG [main] - Committing JDBC Connection [com.mysql.jdbc.JDBC4Connection@bd8db5a]
    DEBUG [main] - Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@bd8db5a]
    DEBUG [main] - Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@bd8db5a]

     刷新数据库:

    此时在3操作添加的记录成功删除!

     5.update更新操作

    id为的username为程花花貌似很难听

    修改一下为张花花

      控制台代码(部分)

    DEBUG [main] - Opening JDBC Connection
    DEBUG [main] - Created connection 198761306.
    DEBUG [main] - Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@bd8db5a]
    DEBUG [main] - ==>  Preparing: update user set username=? where id=? 
    DEBUG [main] - ==> Parameters: 张花花(String), 1(Integer)
    DEBUG [main] - <==    Updates: 1
    DEBUG [main] - Committing JDBC Connection [com.mysql.jdbc.JDBC4Connection@bd8db5a]
    DEBUG [main] - Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@bd8db5a]
    DEBUG [main] - Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@bd8db5a]

    刷新数据库:

      

     至此,当您看到这里,并且会单独操作,作为初学者,您已经成功入门了!

  • 相关阅读:
    什么是数据挖掘?
    Oracle 泵导入导出
    如何创建一个 mongo 数据库并为它添加一个认证用户?
    如何提高 windows 的使用效率?--巧用运行命令
    在 vs2017 中使用 C# 7 新特性。
    什么是按引用传递和按值传递?
    Vue、Vuex+Cookie 实现自动登陆 。
    Web.config 灵活配置
    远程终端
    js框架总结
  • 原文地址:https://www.cnblogs.com/Mrchengs/p/9772845.html
Copyright © 2011-2022 走看看