2019-05-05 配置Mybatis

2019-05-05  本文已影响0人  北街九条狗

安装mybatis依赖jar包:mybatis-3.4.6.jar
连个辅助jar包:①打印日志jar包log4j②commons

1、 log4j.properties

在classpath(resources)下创建log4j.properties如下:

# Global logging configuration
#在开发环境日志级别要设置为DEBUG、生产环境要设置为INFO或者ERROR
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

db.properties

# 右键,属性--》utf-8
# 数据库配置文件 name = value的形式配置
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/java2demo?useUnicode=true&characterEncoding=utf8
jdbc.user = root
jdbc.password = root

2、SqlMapConfig.xml

配置 Mybatis 的运行环境、数据源、事务等

<?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> 是根节点,有它才能在它中写别的标签-->
<configuration>
<!--  配置pojo下文件的映射路径 -->
<typeAliases>
 <!--    包的类型别名,配置完后,该包下所有类的别名都默认是自己的类名-->
        <package name="com.neuedu.pojo"/>
<!--        自定义别名-->
<!--        <typeAlias type="com.neuedu.pojo.Emp" alias="ABC"></typeAlias-->
    </typeAliases>
<!--加载数据库配置文件-->
    <properties resource="db.properties"></properties>
<!--加载环境,读取配置文件-->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.user}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
   <!-- mapper映射器(连接数据库文件所在包(dao层、持久层),
        mybatis会到该包下找对应的xml文件实现映射) -->
    <mappers>
        <package name="com.mapper"></package>
    </mappers>
</configuration>

定义Mapper接口

public interface UserMapper {
    public User findUserById(int id);
}

定义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="com.mapper.UserMapper">
<!--    id:方法名 parameterType传参类型 resultType返回值类型-->
    <select id="findUserById" parameterType="int" resultType="com.domain.User">
        select * from user where id = #{1}
    </select>
</mapper>

主方法测试

 public static void main(String[] args) {
        // 连接数据库java2demo,对emp表中数据进行增删改查
        // 如何调用EmpMapper的映射完成查询
        //得到配置文件流
        InputStream inputStream = null;
        try {
            //1.得到配置文件流
            inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
            //2.创建会话工厂,传入Mybatis的配置文件信息
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            //3.利用工厂对象创建SqlSession对象
            SqlSession sqlSession = sqlSessionFactory.openSession();
            //4.代理模式,创建usermapper对象,mybatis自动生成代理对象
            EmpMapper empMapper = sqlSession.getMapper(EmpMapper.class);
            // 1.根据id查询员工信息
           Emp emp = empMapper.serchByEmpno(7369);    
           System.out.println(emp.getEname()+","+emp.getEmpno()+","+emp.getHiredate()+","+emp.getSal());
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

练习

package com.neuedu.mapper;

import com.neuedu.pojo.Emp;

import java.util.List;

public interface EmpMapper {
//根据empno查询某个员工信息
    Emp serchByEmpno(Integer empno);
//    查询全部员工信息
    List<Emp> serchAll();
//    查询员工某 部门工资xxx以上
    List<Emp> serchByOptions(Emp emp);
}
<?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="com.neuedu.mapper.EmpMapper">
<!--    id:方法名 parameterType传参类型 resultType返回值类型-->
    <select id="serchByEmpno" parameterType="Integer" resultType="Emp">
        select * from emp where empno = #{value}
    </select>
<!--    返回值为list或set返回值写泛型的类型-->
    <select id="serchAll"  resultType="Emp">
        select * from emp
    </select>
<!--    #{deptno}实际上是获取deptno的get方法-->
    <select id="serchByOptions" resultType="Emp" parameterType="Emp">
         select * from emp where deptno = #{deptno} and sal > #{sal}
    </select>
</mapper>

package com.neuedu.test;

import com.neuedu.mapper.EmpMapper;
import com.neuedu.pojo.Emp;
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 java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class MybatisTest {
    public static void main(String[] args) {
        // 连接数据库java2demo,对emp表中数据进行增删改查
        // 如何调用EmpMapper的映射完成查询
        //得到配置文件流
        InputStream inputStream = null;
        try {
            //1.得到配置文件流
            inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
            //2.创建会话工厂,传入Mybatis的配置文件信息
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            //3.利用工厂对象创建SqlSession对象
            SqlSession sqlSession = sqlSessionFactory.openSession();
            //4.代理模式,创建usermapper对象,mybatis自动生成代理对象
            EmpMapper empMapper = sqlSession.getMapper(EmpMapper.class);
            // 1.根据id查询员工信息
//            Emp emp = empMapper.serchByEmpno(7369);
//            System.out.println(emp.getEname()+","+emp.getEmpno()+","+emp.getHiredate()+","+emp.getSal());
            // 2.查询所有员工信息
//            List<Emp> list = empMapper.serchAll();
//            for(Emp emp : list){
//                System.out.println(emp.getEname()+","+emp.getEmpno()+","+emp.getHiredate()+","+emp.getSal());
//            }
            // 3.查询某部门,工资xxx以上的员工信息
            Emp emp1 = new Emp();
            emp1.setDeptno(20);
            emp1.setSal(3000.0);
            List<Emp> list = empMapper.serchByOptions(emp1);
            for(Emp emp : list){
                System.out.println(emp.getEname()+","+emp.getEmpno()+","+emp.getHiredate()+","+emp.getSal());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}


上一篇下一篇

猜你喜欢

热点阅读