• MyBatis使用动态SQL用法以及例题


     

    在确保可运行项目能够正确无误地运行之后,再严格照着教程的步骤,对代码模仿一遍。模仿过程难免代码有出入,导致无法得到期望的运行结果,此时此刻通过比较正确答案 ( 可运行项目 ) 和自己的代码,来定位问题所在。采用这种方式,学习有效果,排错有效率,可以较为明显地提升学习速度,跨过学习路上的各个槛。
    链接:https://pan.baidu.com/s/1zkidEEFcbcdMCxdAAqjaFQ?pwd=ltyk
    提取码:ltyk

    基于框架的程序要成功运行,对于JAR包的版本,配置文件的正确性有着苛刻的要求,任何一个地方出错了,都会导致框架程序运行失败。 请务必严格按照教程的指导,完全模仿操作,直到成功看到运行效果。 第一次成功之后,信心,思路都会有较好的铺垫,然后再根据自己的疑惑,在“成功”的代码上做原本想做的改动和调整,这样可以大大节约学习的时间,提高效率,切勿一来就擅自改动,给自己的学习制造障碍!!!

     

     前提准备

    1.创建一个java项目,并导入依赖的jar包。

    2.将配置文件中的数据库信息修改为外部引用的形式,在src目录下创建一个db.properties文件,并编辑代码。

    1. jdbc.driver=com.mysql.cj.jdbc.Driver
    2. jdbc.url=jdbc:mysql://127.0.0.1:3306/db_mybatis?characterEncoding=UTF-8
    3. jdbc.username=root
    4. jdbc.password=root

    3.创建一个MyBatis配置文件mybatis-config.xml.

    1. configuration
    2. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    3. "http://mybatis.org/dtd/mybatis-3-config.dtd">
    4. <configuration>
    5. <properties resource="db.properties" />
    6. <environments default="development">
    7. <environment id="development">
    8. <transactionManager type="JDBC"/>
    9. <dataSource type="POOLED">
    10. <property name="driver" value="${jdbc.driver}"/>
    11. <property name="url" value="${jdbc.url}"/>
    12. <property name="username" value="${jdbc.username}"/>
    13. <property name="password" value="${jdbc.password}"/>
    14. dataSource>
    15. environment>
    16. environments>
    17. <mappers>
    18. <mapper resource="mybatis/UserMapper.xml" />
    19. mappers>
    20. configuration>

    4.创建一个包命名为pojo,在pojo包下创建一个类命名为User。

    1. package pojo;
    2. public class User {
    3. private Integer id;
    4. private String username;
    5. private String jobs;
    6. private String phone;
    7. public Integer getId() {
    8. return id;
    9. }
    10. public void setId(Integer id) {
    11. this.id = id;
    12. }
    13. public String getUsername() {
    14. return username;
    15. }
    16. public void setUsername(String username) {
    17. this.username = username;
    18. }
    19. public String getJobs() {
    20. return jobs;
    21. }
    22. public void setJobs(String jobs) {
    23. this.jobs = jobs;
    24. }
    25. public String getPhone() {
    26. return phone;
    27. }
    28. public void setPhone(String phone) {
    29. this.phone = phone;
    30. }
    31. public String toString() {
    32. return "User [id=" + id + ", username=" + username + ", jobs=" + jobs + ", phone=" + phone + "]";
    33. }
    34. }

    5.创建一个包命名为util,在util包下创建一个类命名为MyBatisUtil。

    1. package util;
    2. import java.io.IOException;
    3. import java.io.InputStream;
    4. import org.apache.ibatis.io.Resources;
    5. import org.apache.ibatis.session.SqlSession;
    6. import org.apache.ibatis.session.SqlSessionFactory;
    7. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    8. public class MyBatisUtil {
    9. private static SqlSessionFactory sessionFactory=null;
    10. static {
    11. try {
    12. String resourse="mybatis-config.xml";
    13. InputStream inputStream=Resources.getResourceAsStream(resourse);
    14. sessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
    15. } catch (IOException e) {
    16. // TODO: handle exception
    17. }
    18. }
    19. public static SqlSession getSession() {
    20. return sessionFactory.openSession();
    21. }
    22. }

    6.创建一个映射文件命名为UserMapper.xml。

    1. mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    2. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    3. <mapper namespace="mybatis.UserMapper">
    4. mapper>

    7.创建一个包命名为test,用来存放测试类。

    具体用法

     元素

    My Batis中,元素是最常用的判断语句,主要用于实现某些简单的条件选择。在实际应用中,我们可能会通过多个条件来精确地查询某个数据。

    1.编辑UserMapper.xml,在标签内添加以下代码:

    1. <select id="findUserByNameAndJobs" parameterType="pojo.User" resultType="pojo.User">
    2. select * from t_user where 1=1
    3. <if test="username != null and username != ''">
    4. and username like concat('%',#{username},'%')
    5. if>
    6. <if test="jobs != null">
    7. and jobs=#{jobs}
    8. if>
    9. select>