zoukankan      html  css  js  c++  java
  • JavaEE——Mybatis(1)--接口式编程

    1.先导入三个包

    2.在配置log4j的xml

    3.其中mybatis-config,xml的内容是在说明文档复制的:(注意property里面的配置要自己重新写)

    还有写好的sql映射文件(studentMapper.xml)一定要注册到全局配置文件(mybatis-config.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/db_person"/>
                    <property name="username" value="root"/>
                    <property name="password" value="1234"/>
                </dataSource>
            </environment>
        </environments>
        <mappers>
            <mapper resource="studentMapper.xml"/>
        </mappers>
    </configuration>
    

    4. studentMapper中的:其中有sql语句select * from student where id = #{id} 如mysql数据库中的列名和定义的类的名不一样,则使用别名

    select id, name, sex, age Age

    <!-- 
    namespace:名称空间;指定为接口的全类名
    id:唯一标识
    resultType:返回值类型
    #{id}:从传递过来的参数中取出id值

    public Employee getEmpById(Integer id);
    -->
    <?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.person.Students">
        <select id="selectStu" resultType="test.person.Students">
            select * from student where id = #{id}
        </select>
    </mapper>
    

     5.查询时:

    /**
         * 1、根据xml配置文件(全局配置文件)创建一个SqlSessionFactory对象 有数据源一些运行环境信息
         * 2、sql映射文件;配置了每一个sql,以及sql的封装规则等。
         * 3、将sql映射文件注册在全局配置文件中
         * 4、写代码:
         * 		1)、根据全局配置文件得到SqlSessionFactory;
         * 		2)、使用sqlSession工厂,获取到sqlSession对象使用他来执行增删改查
         * 			一个sqlSession就是代表和数据库的一次会话,用完关闭
         * 		3)、使用sql的唯一标志来告诉MyBatis执行哪个sql。sql都是保存在sql映射文件中的。
         *
         * @throws IOException
         */
        @Test
        public void test() throws IOException {
    
            // 2、获取sqlSession实例,能直接执行已经映射的sql语句
            // sql的唯一标识:statement Unique identifier matching the statement to use.
            // 执行sql要用的参数:parameter A parameter object to pass to the statement.
            String resource = "conf/mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            SqlSessionFactory sqlSessionFactory =
                    new SqlSessionFactoryBuilder().build(inputStream);
    
            SqlSession session = sqlSessionFactory.openSession();
            try{
                /*第一个参数是studentMapper中的namespace+id*/
                Students student = session.selectOne( "test.person.Students.selectStu", 1 );
                System.out.println(student);
            }finally{
                session.close();
            }
        }
    

    6.使用接口查询

    接口:StudentMapper

    package test.dao;
    
    import test.person.Students;
    
    public interface StudentMapper {
    
        public Students getById(Integer id);
    }
    

      将接口与xml绑定  其中的namespace是接口的路径  其中的id是接口中的方法名

    studentMapper.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.dao.StudentMapper">
    
    <select id="getById" resultType="test.person.Students">
        select * from student where id = #{id}
    </select>
    </mapper>
    

      测试:

    /**
         * 1、接口式编程
         * 	原生:		Dao		====>  DaoImpl
         * 	mybatis:	Mapper	====>  xxMapper.xml
         *
         * 2、SqlSession代表和数据库的一次会话;用完必须关闭;
         * 3、SqlSession和connection一样她都是非线程安全。每次使用都应该去获取新的对象。
         * 4、mapper接口没有实现类,但是mybatis会为这个接口生成一个代理对象。
         * 		(将接口和xml进行绑定)
         * 		EmployeeMapper empMapper =	sqlSession.getMapper(EmployeeMapper.class);
         * 5、两个重要的配置文件:
         * 		mybatis的全局配置文件:包含数据库连接池信息,事务管理器信息等...系统运行环境信息
         * 		sql映射文件:保存了每一个sql语句的映射信息:
         * 					将sql抽取出来。
         *
         */
    public SqlSessionFactory getSqlSessionFactory() throws IOException {
            String resource = "conf/mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            return new SqlSessionFactoryBuilder().build(inputStream);
        }
    
    @Test
        public void test1() throws IOException {
            SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
    
            SqlSession session = sqlSessionFactory.openSession();
    
            try{
                StudentMapper studentMapper = session.getMapper(StudentMapper.class);
    
                Students student = studentMapper.getById(2);
    
                System.out.println(student);
            }finally{
                session.close();
            }
        }
    

      

  • 相关阅读:
    Different ways how to escape an XML string in C# (zz)
    sql server 中nvarchar(max)性能
    使用 access 的一些限制条件 (zz)
    js 常用属性和方法
    js 常用关键字及方法
    <推荐>35个优秀的电子商务网站界面 (转)
    ASP.NET底层架构 22
    JSON 学习总结(1)
    学习记录
    asp.net原理(总结整理 2)
  • 原文地址:https://www.cnblogs.com/SkyeAngel/p/8195753.html
Copyright © 2011-2022 走看看