02

    xiaoxiao2023-07-29  135

    

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

    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>

    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>

    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

    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();

            }

    }

     

     
    最新回复(0)