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

 

运行结果如下:

 

转载于:https://www.cnblogs.com/Kuriyama-Mirai/p/11439013.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值