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

时间:2023-03-10 05:51:48
02_MyBatis项目结构,所需jar包,ehcache.xml配置,log4j.properties,sqlMapConfig.xml配置,SqlMapGenerator.xml配置

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

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

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

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

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

}

}