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

}

}




02_MyBatis项目结构,所需jar包,ehcache.xml配置,log4j.properties,sqlMapConfig.xml配置,SqlMapGenerator.xml配置的更多相关文章

  1. 01_MyBatis EHCache集成及所需jar包,ehcache.xml配置文件参数配置及mapper中的参数配置

     1 与mybatis集成时需要的jar ehcache-core-2.6.5.jar mybatis-ehcache-1.0.2.jar Mybatis.日志.EHCache所需要的jar包如下 ...

  2. springmvc 项目完整示例07 设置配置整合springmvc springmvc所需jar包springmvc web.xml文件配置

    前面主要是后台代码,spring以及mybatis的整合 下面主要是springmvc用来处理请求转发,展现层的处理 之前所有做到的,完成了后台,业务层和持久层的开发完成了 接下来就是展现层了 有很多 ...

  3. 搭建SSH环境之添加所需jar包

    一.首先介绍要添加框架环境: JUnit Struts2 Hibernate Spring (1)配置JUnit /**-------------------------添加JUnit-------- ...

  4. spring原理案例-基本项目搭建 02 spring jar包详解 spring jar包的用途

    Spring4 Jar包详解 SpringJava Spring AOP: Spring的面向切面编程,提供AOP(面向切面编程)的实现 Spring Aspects: Spring提供的对Aspec ...

  5. 如何运行spring项目,并打成jar包进行发布

    一.创建spring项目 1.创建项目 2.创建moudule,选择java类型即可. 3.创建lib文件,引入spring的4个核心包spring-beans.spring-context.spri ...

  6. 将 Spring boot 项目打成可执行Jar包,及相关注意事项(main-class、缺少 xsd、重复打包依赖)

    最近在看 spring boot 的东西,觉得很方便,很好用.对于一个简单的REST服务,都不要自己部署Tomcat了,直接在 IDE 里 run 一个包含 main 函数的主类就可以了. 但是,转念 ...

  7. IntelliJ IDEA基于maven构建的web项目找不到jar包

    基于maven构建的springMVC项目,下载好jar包import后,运行提示ClassNotFoundException: java.lang.ClassNotFoundException: o ...

  8. Eclipse附加项目中的某个jar包的源码

    1.这里以web项目为例,打开项目应用的jar包:如下图 2.在想要引入源码的jar包上右键>属性(Properties)

  9. json所需jar包 & js解析后台json数据

    Json 所需jar包: var listxxx='<%=request.getAttribute("listxxx")%>';  // list数组 var mapx ...

随机推荐

  1. hdu 5012(bfs)

    题意:给你2个 骰子,让你通过翻转使第一个变成第二个,求最少翻转数 思路:bfs #include<cstdio> #include<iostream> #include< ...

  2. python设计模式浅析

    今天简单聊聊python的设计模式,GOF设计模式(c++)和Head first design pattern(Java)是两本设计模式的经典,基本可以照搬在python上面,但是你会发现pytho ...

  3. cmake 没有那个目录

    问题:bash: /usr/bin/cmake: 没有那个文件或目录 因为直接使用cmake系统回到默认的/usr/bin中去寻找,但是src中安装的cmake是在/usr/local/bin中,所以 ...

  4. 数据结构与算法 —— 链表linked list(05)

    反转一个单链表. 进阶:链表可以迭代或递归地反转.你能否两个都实现一遍? 示例 : 给定这个链表:1->2->3->4->5 返回结果: 5->4->3->2 ...

  5. 如何理解主函数main中变量(int argc,char *argv[])的含义

    每一个C语言的初学者,都会注意到主函数main()里的两个参数,但是初学者一般不会去关注这两个参数的具体作用,下面我们就来介绍这两个参数的具体作用. main()函数是控制台程序的入口,int mai ...

  6. python3全栈开发-并发编程,多进程的基本操作

    一 .multiprocessing模块介绍 python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu_count()查看),在python中大部分情况需要使用多进程. ...

  7. Java锁机制了解一下

    前言 回顾前面: 多线程三分钟就可以入个门了! Thread源码剖析 多线程基础必要知识点!看了学习多线程事半功倍 只有光头才能变强! 本文章主要讲的是Java多线程加锁机制,有两种: Synchro ...

  8. ignorable tips

    枚举 索引从0开始 sort 默认升序排列  Array.Sort(intSort); //复制数组 Array.Copy(intSort,intNew,3); intsort 源数组 intnew ...

  9. 线性表 linear_list 顺序存储结构

    可以把线性表看作一串珠子 序列:指其中的元素是有序的 注意last和length变量的内在关系 注意:将元素所占的空间和表长合并为C语言的一个结构类型 静态分配的方式,分配给一个固定大小的存储空间之后 ...

  10. Go 处理yaml类型的配置文件

    先说一下,这里用到了很多关于反射类型的功能,可能刚开始看代码,如果对反射不熟悉的可能会不是非常清晰,但是同时也是为了更好的理解golang中的反射,同时如果后面想在代码中可以直接从我的git地址get ...