1、对原生态的jdbc程序问题总结
    1.1  jdbc程序:使用jdbc查询mysql数据库中用户表的记录
    1.2  问题:
            1)数据库连接使用时创建、不使用时就释放:对数据库进行频繁的连接的创建和释放,造成数据库资源浪费,影响数据库性能---------------使用数据库连接池管理数据库连接
            2)将sql语句硬编码到java代码中,如果sql语句修改,需要重新编译java代码,不利于系统维护-------------将sql语句配置在xml配置文件中,即使sql变化,不需要对java代码进行重新编译
            3)向prepareStatement中设置参数,对占位符号位置和设置参数值,硬编码在java代码中,不利于系统维护-------------------将sql语句及占位符和参数全部配置在xml文件中
            4)从resultSet中遍历结果集数据时,存在硬编码,将获取表的字段进行硬编码,不利于系统维护----------------------将结果集自动映射成java对象
2、mybatis框架原理
mysql语句的执行顺序    2.1  mybatis是什么?
        mybatis是一个持久层框架,是apache下的顶级项目
        github下:github/mybatis/mybatis-3/releases
        mybatis让程序员将主要精力放在sql上,通过mybatis提供的映射方式,自由灵活生成满足sql需要的sql语句
        mybatis可以将向preparestatement输入的参数自动进行输入映射,将查询结果集灵活映射成java对象(输出映射)。
    2.2  mybatis框架
                            \   
3、mybatis入门程序
     3.1  需求
            根据主键查询用户信息
            根据用户名模糊查询用户信息
            怎删改查.....
     3.2  mybati运行环境(jar包):
github/mybatis/mybatis-3/releases 下载
            lib下:依赖包
            mybatis-3.4.1.jar:核心包
      3.3  log4j.properties
#Global logging configuration
log4j.rootLogger=ERROR, stdout
#MyBatis logging configuration...
log4j.logger.org.mybatis.example.BlogMapper=TRACE
#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
      3.4  工程目录结构
               
    3.5  根据用户id查询用户信息、通过用户名模糊查询用户信息
        3.5.1  编写映射文件(包括对应的实体类:User.java)
               映射文件命名:l(原始的ibatis命名方式),mapper代理的映射文件名称叫做l
       
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-////DTD Mapper 3.0//EN"
"/dtd/mybatis-3-mapper.dtd">
 
<!--namespace命名空间,作用就是对sql进行分类化管理,理解sql隔离
    注意:将来如果使用mapper代理方法开发,namespace有特殊作用-->
<mapper namespace="test">
    <!--在映射文件中配置许多sql语句-->
    <!--通过select执行数据库查询,
    id:标识映射文件中的sql,成为statementid,将sql语句封装到mapperStatement对象中,所以将id成为statementid
    parameterType:输入参数的类型
    #{}:表示一个占位符
    #{id}:其中id表示输入的参数,参数名就是id,如果输入参数是简单类型,#{}中的参数名可以任意
    resultType:指定sql输出结果所映射的对象类型
    -->
    <select id="findUserById" parameterType="int" resultType="com.liyuan.po.User">
        SELECT * FROM USER WHERE uid=#{id}
    </select>
   
    <!--${}:表示拼接sql串,将接收到的参数的内容不加任何修饰拼接到sql中-->
    <select id="findUserByName" parameterType="java.lang.String" resultType="com.liyuan.po.User">
        SELECT * FROM USER WHERE name LIKE '%${value}%'
    </select>sql server 使用教程
</mapper>
        3.5.2  将映射文件加载到SqlMapConfig配置文件中
       
<mappers>
<mapper resource="l"/>
</mappers>
        3.5.3  程序编写
@Test
    publicvoid findUserByIdTest()throwsIOException{
        // mybatis配置文件
        String resource ="l";
        InputStream input =Resources.getResourceAsStream(resource);
        // 创建会话工厂
        SqlSessionFactory sqlSessionFactory =newSqlSessionFactoryBuilder()
                .build(input);
        // 通过工厂得到SqlSession
        SqlSession sqlSession =shodan介绍 sqlSessionFactory.openSession();
c语言程序编译器        // 通过SqlSession操作数据库
        User user = sqlSession.selectOne("test.findUserById",23);
        System.out.println(user.getName());
        // 释放资源
        sqlSession.close();
    }
 
    // 根据name查询用户信息,得到一条记录的结果
    @Test
    publicvoid findUserByNameTest()throwsIOException{
        // mybatis配置文件
        String resource ="l";
        InputStream input =Resources.php+ajax自动聊天回复getResourceAsStream(resource);
        // 创建会话工厂
        SqlSessionFactory sqlSessionFactory =newSqlSessionFactoryBuilder()
                .build(input);
        // 通过工厂得到SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
        // 通过SqlSession操作数据库
        List<User> list = sqlSession.selectList("test.findUserByName","李");
        System.out.println(list.size());
        // 释放资源
        sqlSession.close();
    }
       
    3.6  插入用户信息
      3.6.1  l映射文件:
           
<!--添加用户
    parameterType:制定输入参数类型是pojo
    #{}:中指定pojo属性名,接收到pojo对象的属性值,mybatis通过OGNL获取对象的属性值-->
    <insert id="insertUser" parameterType="com.liyuan.po.User">
        insert into user(username,password) value(#{username},#{password})
    </insert>
      3.6.2  测试代码:
       
@Test
    publicvoid insertUserTest()throwsIOException{
        // mybatis配置文件
        String resource ="l";
        InputStream input =Resources.getResourceAsStream(resource);
        // 创建会话工厂
        SqlSessionFactory sqlSessionFactory =newSqlSessionFactoryBuilder()
                .build(input);
        // 通过工厂得到SqlSession

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。