zoukankan      html  css  js  c++  java
  • Mybaiis(1)

    Mybatis

      指的是支持普通sql查询,存储过程和高级映射的优秀持久层框架。消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。

    使用方法:

      1.加入相关的jar包

      

       2.创建一个实体类

    package com.zhiyou100.ydb.bean;
    
    public class User {
        private int id;
        private String name;
        private int age;
        //创建对应的set get 方法 
        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;
        }
        //创建构造方法
        public User(int id, String name, int age) {
            super();
            this.id = id;
            this.name = name;
            this.age = age;
        }
        public User(String name, int age) {
            super();
            this.name = name;
            this.age = age;
        }
        public User() {
            super();
        }
        //重写toString方法
        @Override
        public String toString() {
            return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
        }
    }

      3.添加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>
        <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>
    </configuration>

      4.修改配置文件

       5.定义操作users表的sql映射文件 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">
    <!-- namespace:命名空间:用于区分各个Mapper.xml文件 -->
    <mapper namespace="com.zhiyou100.ydb.mapper.UserMapper">
    <!-- 
        编写根据id查询的sql语句
        
        根据id查询用户。id:标识该标签。
        parameterType:参数类型。可以写 也可以省略
        resultType:返回结果的类型。
        #{id}:类似于EL表达式。 解析id的值
     -->
        <select id="getUser" parameterType="int" resultType="com.zhiyou100.ydb.bean.User"> 
                select * from users where id=#{id} 
        </select>
    </mapper>

      6.在conf.xml文件中引入UserMapper.xml文件

    <mappers>
            <mapper resource="com/zhiyou100/ydb/mapper/UserMapper.xml"/>
    </mappers>

      7.编写测试代码

    package com.zhiyou100.ydb.test;
    
    import static org.junit.jupiter.api.Assertions.*;
    
    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;
    import org.junit.jupiter.api.AfterAll;
    import org.junit.jupiter.api.BeforeAll;
    import org.junit.jupiter.api.Test;
    
    import com.zhiyou100.ydb.bean.User;
    
    class UserTest {
        static SqlSession session=null;
        final String str="com.zhiyou100.ydb.mapper.UserMapper";
        @BeforeAll
        static void setUpBeforeClass() throws Exception {
            //解析配置文件
            Reader reader = Resources.getResourceAsReader("conf.xml");
            //获取session对象,表示Connection 用于操作数据库
            SqlSessionFactory sessionFactory =new SqlSessionFactoryBuilder().build(reader);
            session = sessionFactory.openSession();
            
        }
        @Test
        void SelectById() {
            User user = session.selectOne(str+".getUser",1);
            System.out.println(user);
        }
        @AfterAll
        static void tearDownAfterClass() throws Exception {
            session.commit();//提交数据,事务管理
        }
    
    }

      8.查询的条件不在实体类中时,可以将条件封装在map中,参数就可以写成map类型

    <!-- 
            查询min-max区间内的User信息
            参数可以使用map类型
         -->
        <select id="getUser1" parameterType="map" resultType="com.zhiyou100.ydb.bean.User" >
                select * from users where age between #{min} and #{max}
        </select>

      8的测试代码

    @Test
        void SelectByage() {
            Map<String, Integer> map = new HashMap<>();
            map.put("min", 10);
            map.put("max", 20);
            List<User> list = session.selectList(str+".getUser1", map);
            System.out.println(list);
        }

       注意:如果xml中出现特殊字符可以使用转义字符 或者  例子:

     <select id="getUser1" parameterType="map" resultType="com.zhiyou100.ydb.bean.User" >
                select * from users where age >= #{min} and age&lu= #{max}
           <!-- 或者 -->
           <![CDATA[select * from users where age >= #{min} and age <= #{max}]]>
    </select>

     优化:(1)

      1.建立User.properties 文件

      2.将conf.xml 文件中的有关数据库信息取出,放入到User.properties 文件中

    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/mybatis
    jdbc.username=root
    jdbc.password=root

      3.在conf.xml文件中引入User.properties 文件

    <?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>
    <properties resource="User.properties"></properties>                     <!----------------引入User.properties 文件----------------->
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC" />
                <dataSource type="POOLED">
                    <property name="driver" value="${jdbc.driver}" />       <!-- value值 按照${}格式编写 -->
                    <property name="url"
                        value="${jdbc.url}" />
                    <property name="username" value="${jdbc.username}" />
                    <property name="password" value="${jdbc.password}" />
                </dataSource>
            </environment>
        </environments>
        <mappers>
            <mapper resource="com/zhiyou100/ydb/mapper/UserMapper.xml"/>
        </mappers>
    </configuration>

    优化:(2)

      为实体类起别名

        1.将如下代码加入到conf.xml文件中

        2.意思是将 type 中的值 改名为 alias 中的值

    <typeAliases>
        <typeAlias type="com.zhiyou100.ydb.bean.User" alias="User"/>
    </typeAliases>

       为同包下的所有所有的实体类起别名 使用实体类时可以直接写实体类名

    <typeAliases>
        <package name="com.zhiyou100.ydb.bean"/>
    </typeAliases>

    注意:起别名不建议使用,建议还是在映射文件中使用全类名

    优化:(3)

      日志

      加入日志jar包

      

      建立log4j.properties文件 注意:名字一定要写log4j

      将如下代码放入到log4j.properties文件中

    log4j.properties,
    log4j.rootLogger=DEBUG, Console
    #Console
    log4j.appender.Console=org.apache.log4j.ConsoleAppender
    log4j.appender.Console.layout=org.apache.log4j.PatternLayout
    log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
    log4j.logger.java.sql.ResultSet=INFO log4j.logger.org.apache=INFO
    log4j.logger.java.sql.Connection=DEBUG log4j.logger.java.sql.Statement=DEBUG
    log4j.logger.java.sql.PreparedStatement=DEBUG

    运行结果如下:

  • 相关阅读:
    国密SM4,javaScript加密 java解密
    使用Nexus搭建Maven私服
    eclipse中使用Maven创建Web项目
    mysql报错码code=exited,status=2的解决方案
    Git出现 fatal: Pathspec 'xxx' is in submodule 'xxx' 异常的解决方案
    php使用ZipArchive提示Fatal error: Class ZipArchive not found in的解决方法
    (转)Git操作
    apt update时出现签名无法验证,公钥失效的解决办法
    提交项目到Github
    分解关联查询
  • 原文地址:https://www.cnblogs.com/Kuriyama-Mirai/p/11439013.html
Copyright © 2011-2022 走看看