mybatis的使用

1.加载需要用到的依赖包

在pom.xml文件中添加相关的依赖文件,mysql-connector-java(数据库连接文件JDBC),lombok(小辣椒插件依赖),junit(单元测试依赖),log4j(日志文件依赖)

2.添加mybatis的配置文件

在文件夹resources中创建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>
    <typeAliases>
        <!--这里的作用就是起别名,就是再使用com.qjp.entity.user时可以直接写user-->
        <package name="com.qjp.entity"/>
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <!--数据源的配置:name的值固定  value的值要根据客户自己修改-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver" />
                <property name="url"    value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=Asia/Shanghai" />
                <property name="username" value="root" />
                <property name="password" value="123456" />
            </dataSource>
        </environment>
    </environments>


    <mappers>
        <mapper resource="mapper/userMapper.xml"></mapper>
    </mappers>
</configuration>

3.添加映射文件

在resources文件中创建文件mapper(必须是这个名字)然后创建各个表的映射文件

User表的映射文件是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:命名空间
       可以随便起名,但是后期我们要求命名空间的值必须和所对应的dao相同
       这里是mybatis的映射


-->
<mapper namespace="qy151.qjp">
    <select id="select" parameterType="int" resultType="User">
        select * from t_user where userid=#{id};
    </select>
    <select id="selectAll" resultType="User">
        select * from t_user ;
    </select>
</mapper>

4.创建并注册映射

在写好映射文件后,需要在maybatis.xml文件中注册一下

5.创建实体类

其中@符号依赖于lombok;

6.编写映射

7.测试mybatis

8.优化mybatis

起别名优化 在mybatis.xml文件中进行书写 一定要放在最前边 不然会报错

日志优化

名字必须是log4j后缀也必须是这个

配置文件内容

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

9.企业开发模式

在企业中开发时 ,需要创建一个com.qjp.dao 这里存放数据访问层(dao)的接口 然后映射文件中的命名空间名字要和这里的名字一样。

Dao层都改变成接口

使用方法

传递多个参数的方法

添加时返回添加的主键属性

10.列名和属性名不一致的解决办法

解决办法一、

在使用SQL时为每一列都起一个别名 使用 as 属性名 或者在列名的后边空格接属性名

select stu_name as name from student;

select stu_name name from student;

解决办法二、

11.动态sql

应用场景,京东商城的搜索栏,只是一条sql,只不过是动态的sql ,即这条sql会根据你勾选的内容进行改变。

代码一,

代码二、

代码三、

 12.set标签

这个配合if标签一起用,一般用在修改语句。如果传递的参数值为null,那么应该不修改该列的值。

 13foreach标签

即循环标签

在查询多个人员信息的时候使用

 删除多个人员的时候使用

 添加多个人员的时候使用

 13sql片段

 使用方法

 14mybatis映射文件处理特殊字符.

第一种:转义标签 &nbsp; &lt;  
第二种: <![CDATA[sql]]>

 15mybatis完成模糊查询

sql拼接

使用${}不推荐使用,因为不能防止sql注入

 16联表查询

<resultMap id="StuAndDyn" type="com.qjp.entity.Student">
    <id column="stu_id" property="id"/>
    <result column="stu_name" property="name"/>
    <result column="password" property="password"/>
    <result column="stu_sex" property="sex"/>
    <result column="cid" property="cid"/>
    <association property="dynasty" javaType="com.qjp.entity.Dynasty">
        <id column="cid" property="cid"/>
        <result column="cname" property="cname"/>
    </association>
</resultMap>
<select id="selectStuAndDyn" resultMap="StuAndDyn">
    select * from student s join dynasty d on s.cid=d.cid where stu_id=#{id};
</select>

17.分页插件

导入依赖包

添加拦截

使用pagehelper.startPage

 运行结果

18.mybatis generator代码生成器

导入依赖包

 配置genrerator

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>
    <!--location  就是jdbc驱动的本地位置-->
    <classPathEntry location="F:\maven\repository\mysql\mysql-connector-java\8.0.28\mysql-connector-java-8.0.28.jar"/>

    <context id="DB2Tables" targetRuntime="MyBatis3">
        <!--关闭注释-->
        <commentGenerator>
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>
        <!-- jdbc的配置-->
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/mybatis?serverTimezone=Asia/Shanghai"
                        userId="root"
                        password="123456">
                        <property name="nullCatalogMeansCurrent" value="true" />
        </jdbcConnection>

        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>
        <!--targetPackage:路径名 也就是建包   targetProject 表示文件所在目录  实体类配置 -->
        <javaModelGenerator targetPackage="com.qjp.entity" targetProject=".\src\main\java">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <!--创建映射文件 映射文件配置-->
        <sqlMapGenerator targetPackage="mapper" targetProject=".\src\main\resources">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>
        <!--数据访问层配置-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.qjp.dao" targetProject=".\src\main\java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>

        <table schema="mybatis" tableName="student" domainObjectName="Student" enableCountByExample="false"
               enableSelectByExample="false" enableUpdateByExample="false" enableDeleteByExample="false">

        </table>
        <table schema="mybatis" tableName="dynasty" domainObjectName="Dynastys" enableCountByExample="false"
               enableSelectByExample="false" enableUpdateByExample="false" enableDeleteByExample="false">

        </table>


    </context>
</generatorConfiguration>

 运行generator的配置

 public void jh() throws InvalidConfigurationException, IOException, XMLParserException, SQLException, InterruptedException {
       List<String> warnings = new ArrayList<String>();
       boolean overwrite = true;
       File configFile = new File("generator.xml");
       ConfigurationParser cp = new ConfigurationParser(warnings);
       Configuration config = cp.parseConfiguration(configFile);
       DefaultShellCallback callback = new DefaultShellCallback(overwrite);
       MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
       myBatisGenerator.generate(null);

   }

 生成结果

 19使用缓存减少和数据库的交互次数,提高执行效率。

 适合放入缓存:经常查询并且不经常改变的;数据的正确与否对最终结果影响不大的;

不适合放入缓存:经常改变的数据;数据的正确与否对最终结果影响很大的;---数据安全性要求不高。例如:商品的库存,银行的汇率,股市的牌价;

mybatis支持两种缓存

(1)一级缓存----基于SqlSession级别的缓存。默认一级缓存是开启的,不能关闭。

 

(2)二级缓存--基于SqlSessionFactory级别的缓存,它可以做到多个SqlSession共享数据。默认它是关闭。需要手动开启。

开启二级缓存

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值