mybatis学习第一天(老年人的开发模式ibatis)

mybatis入门程序(在maven工程下的编写)


 此开发模式是基于原生DAO的开发方式(ibatis遗留的方式)---->不推荐的,只是学习使用,具体操作会员更加现代的方式,这是以前老程序员使用的方式
 需要程序员自己编写DAO及其DAO实现类


1.添加mybatis的依赖
2.在src/main/resource下新建log4.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.org.apache.ibatis=DEBUG

3.编写实体类
4.编写Dao及其实现类(实现类先不写内容)
5.编写mybatis的全局配置文件
jdbc.properties

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

(编写了一个jdbc配置文件,便于在全局配置文件中引用,以后数据库有修改时,直接修改这个文件就行了,可以解耦合。当然了,也可以不用写这个文件,直接在全局配置文件里面写。)
-----------------------------------------------------------------
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>
    <!-- 加载资源文件[可选] -->
    <properties resource="jdbc.properties"></properties>   <!-- 加载上面写的jdbc.properties文件 -->
    <environments default="dev">
        <environment id="dev">
            <!--利用jdbc管理事务 -->
            <transactionManager type="JDBC"></transactionManager>
            <!-- 数据源信息 -->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driverClassName}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
    <!-- 指定映射文件的位置 -->  <!--载入映射文件,因为在java类中加载时之加载了全局配置文件,将映射文件引入其中,可以间接加载到 -->
    <mappers>
        <mapper resource="User.xml"/>
    </mappers>
</configuration>        
6.编写映射文件User.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="user">
     <!--
        1.标识映射文件中的sql,将sql语句封装到mapped statement对象中,所以称为statement的id
        2.parameterType:指定输入参数类型
        3.#{}:表示一个占位符
        4.#{id}:其中的id表示接收的输入参数,参数名称就是id,如果输入参数是简单类型,#{}中的参数名可以任意,可以为value或者其他
        5.resultType:指定sql输出结果的所映射的java对象类型,select指定resultType表示将单条记录映射成的java对象

     当进行模糊查询时:有以下几种问题

        1.resultType:指定就是单条记录所映射成java对象类型
        2.${}:表示拼接sql串,将接收到参数的内容不加任何修饰拼接在sql中
        3.使用${}容易引起sql注入
        4.${value}:接受输入参数的内容,如果传入类型是简单类型,${}中只能用value
      #{}和${}区别
            #{}表示占位符?,#{}接收简单类型的参数时,里面的名称可以任意
            ${}表示拼接符,${}接收简单类型的参数时,里面的名称必须是value
            ${}里面的值会原样输出,不加解析(如果该参数值是字符串,有不会添加引号)
            ${}存在sql注入的风险,但是有些场景下必须使用,比如排序后面会动态传入排序的列名

    -->
    <select id="findById" parameterType="java.lang.Long" resultType="cn.zzsxt.entity.User">
        select * from tb_user where id = #{id}
    </select>
</mapper>

7.编写Dao实现类中的方法
//加载mybatis-config.xml配置
InputStream ips = Resources.getResourceAsStream("mybatis-config.xml");
//创建SqlSessionFactoryBuilder对象
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//获取SqlSessionFactory对象
SqlSessionFactory sqlSessionFactory = builder.build(ips);
//获取SqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
user = sqlSession.selectOne("user.findById",id);//执行在映射文件中配置的statement的句柄(namespace+id)
//关闭SqlSession
sqlSession.close();

 

结合下面这个图理解实现过程,黄色为我们写程序需要配置的和实现的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值