02_MyBatis项目结构,所需jar包,ehcache.xml配置,log4j.properties,sqlMapConfig.xml配置,SqlMapGenerator.xml配置

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 项目结构(所需jar包,配置文件)sqlMapConfig.xml的配置内容如下:<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEconfigurationPUBLIC"-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-co

  1. 项目结构(所需jar包,配置文件)

  1. sqlMapConfig.xml的配置内容如下:

<?xmlversion="1.0"encoding="UTF-8"?>

<!DOCTYPEconfiguration

PUBLIC"-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

   <!--开启延迟加载 -->

   <settings>

      <!--全局的延迟加载的开关必须要开启 -->

      <setting name="lazyLoadingEnabled" value="true"/>

      <!--积极加载设置成false -->

      <setting name="aggressiveLazyLoading" value="false"/>

      <!--开启二级缓存,缓存中只要是需要配置的针对的都是二级缓存 -->

      <setting name="cacheEnabled" value="true"/>

   </settings>

   

   <typeAliases>

      <!--

          自定义别名:

             type:要定义别名的数据类型

             alias:别名的内容

       -->

       <!--

         非自定义别名:

            jdk中的所用的类的别名直接只用类名即可(不区分大小写)

            如果是基本数据类型的包装类还可以使用基本数据类型的名字

       -->

      <typeAlias type="com.rl.model1.QueryCondition" alias="qc"/>

      <typeAlias type="com.rl.model1.Person" alias="person"/>

   </typeAliases>

   

   <!--数据库的环境的配置 -->

   <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/mybatis"/>

             <property name="username" value="root"/>

             <property name="password" value="123456"/>

          </dataSource>

      </environment>

   </environments>

   

   <!--集中管理表的映射文件 -->

   <mappers>

      <mapperresource="com/rl/mapper/PersonTestMapper.xml"/>

      <mapperresource="com/rl/mapper/PersonMapper.xml"/>

      <mapperresource="com/rl/mapper/RoleMapper.xml"/>

      <mapperresource="com/rl/mapper/OrdersMapper.xml"/>

      <mapperresource="com/rl/mapper/OrderDetailMapper.xml"/>

   </mappers>

</configuration>

  1. sqlMapGenerator.xml的配置如下:

<?xmlversion="1.0"encoding="UTF-8"?>

<!DOCTYPEgeneratorConfigurationPUBLIC"-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>

   <!--指定mysql的驱动包的路径,不要放在中文路径下 -->

   <classPathEntrylocation="E:\MyEclipse10\MyBatis\lib\mysql-connector-java-5.0.8-bin.jar"/>

   <!--配置数据源和生成的代码所存放的位置 -->

   <contextid="context1">

      <commentGenerator>

          <!--去除自动生成的注释 -->

          <propertyname="suppressAllComments"value="true"/>

      </commentGenerator>

      

      <jdbcConnection

          driverClass="com.mysql.jdbc.Driver"

          connectionURL="jdbc:mysql://127.0.0.1:3306/mybatis"

          userId="root"

          password="123456"/>

      <!--所生成的实体类的位置默认资源包src -->

      <javaModelGeneratortargetPackage="com.rl.model1"

          targetProject="mybatis0420"/>

      <!--所生成的sqlMap的影射文件的位置,默认资源包src -->

      <sqlMapGeneratortargetPackage="com.rl.mapper"

          targetProject="mybatis0420"/>

 

      <!--为哪些表生成代码 tableName:表名 schema:不用填写,其余属性是禁用例子查询的生成 -->

      <tableschema=""tableName="role"enableCountByExample="false"

          enableUpdateByExample="false"enableDeleteByExample="false"

          enableSelectByExample="false"selectByExampleQueryId="false"/>

          

      <tableschema=""tableName="person_role"enableCountByExample="false"

          enableUpdateByExample="false"enableDeleteByExample="false"

          enableSelectByExample="false"selectByExampleQueryId="false"/>

   </context>

</generatorConfiguration>

  1. log4j.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.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

  1. ehcache.xml的配置内容如下:

<ehcachexmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:noNamespaceSchemaLocation="../config/ehcache.xsd">

 

   <diskStorepath="java.io.tmpdir"/>

   <defaultCache

           maxElementsInMemory="10000"

           eternal="false"

           timeToIdleSeconds="120"

           timeToLiveSeconds="120"

           maxElementsOnDisk="10000000"

           diskExpiryThreadIntervalSeconds="120"

           memoryStoreEvictionPolicy="LRU">

       <persistencestrategy="localTempSwap"/>

   </defaultCache>

</ehcache>

 4  数据库表

创建数据库:create databasemybatis; use mybatis;

订单.sql

/*==============================================================*/

/* DBMS name:     MySQL 5.0                                   */

/* Created on:    2014/8/7 15:34:20                           */

/*==============================================================*/

 

drop table if exists ORDERS;

 

drop table if exists ORDER_DETAIL;

 

/*==============================================================*/

/* Table: ORDERS                                               */

/*==============================================================*/

create table ORDERS

(

  ORDER_ID            int(10) not null auto_increment,

  PERSON_ID           int(10),

  TOTAL_PRICE         float(10,2),

  ADDR                varchar(50),

  primary key (ORDER_ID)

);

 

/*==============================================================*/

/* Table: ORDER_DETAIL                                         */

/*==============================================================*/

create table ORDER_DETAIL

(

  DETAIL_ID           int(10) not null auto_increment,

  ORDER_ID            int(10),

  PRICE               float(10,2),

  QUANTITY            int(10),

  ITEM_NAME           varchar(10),

  primary key (DETAIL_ID)

);

角色表.sql

/*==============================================================*/

/* DBMS name:     MySQL 5.0                                   */

/* Created on:    2014/8/7 16:28:01                           */

/*==============================================================*/

 

 

drop table if exists PERSON_ROLE;

 

drop table if exists ROLE;

 

/*==============================================================*/

/* Table: PERSON_ROLE                                          */

/*==============================================================*/

create table PERSON_ROLE

(

  PERSON_ID           int(10),

  ROLE_ID             int(10)

);

 

/*==============================================================*/

/* Table: ROLE                                                 */

/*==============================================================*/

create table ROLE

(

  ROLE_ID             int(10) not null auto_increment,

  ROLE_NAME           varchar(10),

  DESCRIPT            varchar(50),

  primary key (ROLE_ID)

);

人员表.sql

/*==============================================================*/

/* DBMS name:     MySQL 5.0                                   */

/* Created on:    2014/8/7 9:59:18                            */

/*==============================================================*/

 

 

drop table if exists PERSON;

 

/*==============================================================*/

/* Table: PERSON                                               */

/*==============================================================*/

create table PERSON

(

  PERSON_ID           int(10) not null auto_increment,

  NAME                varchar(10),

  GENDER              varchar(1),

  PERSON_ADDR         varchar(50),

  BIRTHDAY            date,

  primary key (PERSON_ID)

);

人员测试表.sql

/*==============================================================*/

/* DBMS name:     MySQL 5.0                                   */

/* Created on:    2014/8/7 9:15:56                            */

/*==============================================================*/

 

 

drop table if exists PERSON_TEST;

 

/*==============================================================*/

/* Table: PERSON_TEST                                          */

/*==============================================================*/

create table PERSON_TEST

(

  ID                  int(10) not null auto_increment,

  NAME                varchar(10),

  GENDER              varchar(1),

  ADDRESS             varchar(50),

  BIRTHDAY            date,

  primary key (ID)

);

7JavaBean的编写

Person.java

package com.rl.model;

 

import java.util.Date;

publicclass Person implements Serializable{

   private Integerid;

   private Stringname;

   private Stringgender;

   private Stringaddress;

   private Datebirthday;

   

   public Integer getId() {

      returnid;

   }

 

   publicvoid setId(Integer id) {

      this.id = id;

   }

 

   public String getName() {

      returnname;

   }

 

   publicvoid setName(String name) {

      this.name = name;

   }

 

   public String getGender() {

      returngender;

   }

 

   publicvoid setGender(String gender) {

      this.gender = gender;

   }

 

   public String getAddress() {

      returnaddress;

   }

 

   publicvoid setAddress(String address) {

      this.address = address;

   }

 

   public DategetBirthday() {

      returnbirthday;

   }

 

   publicvoid setBirthday(Date birthday) {

      this.birthday = birthday;

   }

 

   @Override

   public String toString() {

      return"Person [id=" +id +", name=" +name +", gender=" +gender

             +", address=" +address +", birthday=" +birthday +"]";

   }

}

OrderDetail.java

package com.rl.model1;

 

publicclass OrderDetail {

   private IntegerdetailId;

   private IntegerorderId;

   private Floatprice;

   private Integerquantity;

   private StringitemName;

 

   public Integer getDetailId() {

       returndetailId;

   }

 

   publicvoid setDetailId(Integer detailId) {

       this.detailId = detailId;

   }

 

   public Integer getOrderId() {

       returnorderId;

   }

 

   publicvoid setOrderId(Integer orderId) {

       this.orderId = orderId;

   }

 

   public Float getPrice() {

       returnprice;

   }

 

   publicvoid setPrice(Float price) {

       this.price = price;

   }

 

   public Integer getQuantity() {

       returnquantity;

   }

 

   publicvoid setQuantity(Integer quantity) {

       this.quantity = quantity;

   }

 

   public String getItemName() {

       returnitemName;

   }

 

   publicvoid setItemName(String itemName) {

       this.itemName = itemName;

   }

}

Orders.java

package com.rl.model1;

 

import java.util.List;

publicclass Orders {

   private IntegerorderId;

   private IntegerpersonId;

   private FloattotalPrice;

   private Stringaddr;

   private List<OrderDetail>detailList;

   private Personperson;

   

   public Person getPerson() {

      returnperson;

   }

 

   publicvoid setPerson(Person person) {

      this.person = person;

   }

 

   public List<OrderDetail> getDetailList() {

      returndetailList;

   }

 

   publicvoid setDetailList(List<OrderDetail> detailList) {

      this.detailList = detailList;

   }

 

   public Integer getOrderId() {

       returnorderId;

   }

 

   publicvoid setOrderId(Integer orderId) {

       this.orderId = orderId;

   }

 

   public Integer getPersonId() {

       returnpersonId;

   }

 

   publicvoid setPersonId(Integer personId) {

       this.personId = personId;

   }

 

   public Float getTotalPrice() {

       returntotalPrice;

   }

 

   publicvoid setTotalPrice(Float totalPrice) {

       this.totalPrice = totalPrice;

   }

 

   public String getAddr() {

       returnaddr;

   }

 

   publicvoid setAddr(String addr) {

       this.addr = addr;

   }

}

Person.java

package com.rl.model1;

 

import java.io.Serializable;

import java.util.Date;

import java.util.List;

 

import javax.management.relation.Role;

 

/**

 *做二级缓存的时候需要实现Serializable

 */

public class Person implements Serializable {

        private static final long serialVersionUID = 7728191033619971201L;

        private Integer personId;

        private String name;

        private String gender;

        private String personAddr;     

        private Date birthday;    

        private List<Orders> ordersList;    

        private List<Role> roleList;

        

        public List<Role> getRoleList() {

                  return roleList;

        }

 

        public void setRoleList(List<Role> roleList) {

                  this.roleList = roleList;

        }

 

        public List<Orders> getOrdersList() {

                  return ordersList;

        }

 

        public void setOrdersList(List<Orders> ordersList) {

                  this.ordersList = ordersList;

        }

 

        public Integer getPersonId() {

                  return personId;

        }

 

        public void setPersonId(Integer personId) {

                  this.personId = personId;

        }

 

        public String getName() {

                  return name;

        }

 

        public void setName(String name) {

                  this.name = name;

        }

 

        public String getGender() {

                  return gender;

        }

 

        public void setGender(String gender) {

                  this.gender = gender;

        }

 

        public String getPersonAddr() {

                  return personAddr;

        }

 

        public void setPersonAddr(String personAddr) {

                  this.personAddr = personAddr;

        }

 

        public Date getBirthday() {

                  return birthday;

        }

 

        public void setBirthday(Date birthday) {

                  this.birthday = birthday;

        }

 

        @Override

        public String toString() {

                  return "Person [personId=" + personId + ", name=" + name + ", gender="

                                    + gender + ", personAddr=" + personAddr + ", birthday="

                                    + birthday + "]";

        }

}

PersonRole.java

package com.rl.model1;

 

publicclassPersonRole {

   private IntegerpersonId;

 

   private IntegerroleId;

 

   public Integer getPersonId() {

       returnpersonId;

   }

 

   publicvoid setPersonId(Integer personId) {

       this.personId = personId;

   }

 

   public Integer getRoleId() {

       returnroleId;

   }

 

   publicvoid setRoleId(Integer roleId) {

       this.roleId = roleId;

   }

}

QueryCondition.java

package com.rl.model1;

 

import java.util.Date;

 

publicclassQueryCondition {

  private Stringname;

  private Stringgender;

  private Datebirthday;

  

  public String getName() {

     returnname;

  }

 

  publicvoid setName(String name) {

     this.name = name;

  }

 

  public String getGender() {

     returngender;

  }

 

  publicvoid setGender(String gender) {

     this.gender = gender;

  }

 

  public Date getBirthday() {

     returnbirthday;

  }

 

  publicvoid setBirthday(Date birthday) {

     this.birthday = birthday;

  }

}

Role.java

package com.rl.model1;

 

import java.util.List;

 

publicclass Role {

   private IntegerroleId;

   private StringroleName;

   private Stringdescript;

   private List<Person>personList;

   

   public List<Person> getPersonList() {

     returnpersonList;

  }

 

  publicvoid setPersonList(List<Person> personList) {

     this.personList = personList;

  }

 

  public Integer getRoleId() {

       returnroleId;

   }

 

   publicvoid setRoleId(Integer roleId) {

       this.roleId = roleId;

   }

 

   public String getRoleName() {

       returnroleName;

   }

 

   publicvoid setRoleName(String roleName) {

       this.roleName = roleName;

   }

 

   public String getDescript() {

       returndescript;

   }

 

   publicvoid setDescript(String descript) {

       this.descript = descript;

   }

}

SqlHelper.java

package com.rl.util;

 

import java.util.Date;

import java.util.Map;

 

import org.apache.ibatis.jdbc.SqlBuilder;

 

public class SqlHelper {

        

        public String getSql(Map<String,Object> map) {

                  //获得所有可能传递过来的参数

                  String name = (String) map.get("name");

                  String gender = (String) map.get("gender");

                  String personAddr = (String) map.get("personAddr");

                  Date birthday = (Date) map.get("birthday");

                  

                  SqlBuilder.BEGIN();

                  //指定所有的列

                  SqlBuilder.SELECT("*");

                  SqlBuilder.FROM("person");

                  if(name != null){

                           //SqlBuilder中不支持${}

                           SqlBuilder.WHERE("name like '%"+name+"%'");

                  }

                  if(gender != null){

                           SqlBuilder.WHERE("gender = #{gender}");

                  }

                  if(personAddr != null){

                           //SqlBuilder中不支持${}

                           SqlBuilder.WHERE("person_addr like '%"+personAddr+"%'");

                }

                  if(birthday != null){

                           SqlBuilder.WHERE("birthday < #{birthday}");

                  }

                  

                  return SqlBuilder.SQL();

        }

}

 



相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
SQL
南大通用GBase 8a配置gcware日志等级,减少日志输出,节省磁盘IO
南大通用GBase 8a配置gcware日志等级,减少日志输出,节省磁盘IO
|
3月前
|
存储 Prometheus 监控
Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行
本文深入探讨了在Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行。
111 5
|
4月前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
1135 31
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
5月前
|
网络协议 Linux Windows
Rsyslog配置不同端口收集不同设备日志
Rsyslog配置不同端口收集不同设备日志
|
5月前
|
开发工具 git
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
68 1
|
5月前
|
数据采集 监控 Java
SpringBoot日志全方位超详细手把手教程,零基础可学习 日志如何配置及SLF4J的使用......
本文是关于SpringBoot日志的详细教程,涵盖日志的定义、用途、SLF4J框架的使用、日志级别、持久化、文件分割及格式配置等内容。
333 0
SpringBoot日志全方位超详细手把手教程,零基础可学习 日志如何配置及SLF4J的使用......
|
5月前
|
Java 数据库连接 mybatis
Springboot整合Mybatis,MybatisPlus源码分析,自动装配实现包扫描源码
该文档详细介绍了如何在Springboot Web项目中整合Mybatis,包括添加依赖、使用`@MapperScan`注解配置包扫描路径等步骤。若未使用`@MapperScan`,系统会自动扫描加了`@Mapper`注解的接口;若使用了`@MapperScan`,则按指定路径扫描。文档还深入分析了相关源码,解释了不同情况下的扫描逻辑与优先级,帮助理解Mybatis在Springboot项目中的自动配置机制。
278 0
Springboot整合Mybatis,MybatisPlus源码分析,自动装配实现包扫描源码
|
6月前
|
SQL XML Java
mybatis :sqlmapconfig.xml配置 ++++Mapper XML 文件(sql/insert/delete/update/select)(增删改查)用法
当然,这些仅是MyBatis功能的初步介绍。MyBatis还提供了高级特性,如动态SQL、类型处理器、插件等,可以进一步提供对数据库交互的强大支持和灵活性。希望上述内容对您理解MyBatis的基本操作有所帮助。在实际使用中,您可能还需要根据具体的业务要求调整和优化SQL语句和配置。
103 1
|
7月前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之配置Logback以仅记录错误级别的日志到一个滚动文件中的问题如何解决
Java应用结构规范问题之配置Logback以仅记录错误级别的日志到一个滚动文件中的问题如何解决
|
7月前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之配置Logback以在控制台输出日志的问题如何解决
Java应用结构规范问题之配置Logback以在控制台输出日志的问题如何解决