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. 【The Time Traveller's Wife】

    After reading The Time Traveller's Wife:      It's a tragedy,I think.But it's mixed with hope.Henry ...

  2. What's New In MySQL 8.0

        由于8.0内有很多C++11特性.需要gcc4.8版本以上.Rhel6系列默认gcc是4.7.在安装gcc6.1之后仍然检查不过. 原因可能是6.1版本不一定高于4.7,暂不讨论.鉴于升级gc ...

  3. Python作业之购物车

    作业之购物车 购物车的要求如下: 输入总金额 选择购买的商品,金额足够时,把选择的商品添加到购物车,金额不足时,进行提示,商品将不会添加到购物车 随时可以退出程序,同时输出已购买的商品 具体代码如下: ...

  4. SpringBoot 中 get/post 请求处理方式,以及requestboy为Json时的处理

    GET.POST方式提时, 根据request header Content-Type的值来判断: application/x-www-form-urlencoded, 可选(即非必须,因为这种情况的 ...

  5. 浅析java内存管理机制

    内存管理是计算机编程中的一个重要问题,一般来说,内存管理主要包括内存分配和内存回收两个部分.不同的编程语言有不同的内存管理机制,本文在对比C++和Java语言内存管理机制的不同的基础上,浅析java中 ...

  6. canvas初学 半动态画太极图

    可直接复制粘贴运行 <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head&g ...

  7. ECC公钥格式详解

    本文首先介绍公钥格式相关的若干概念/技术,随后以示例的方式剖析DER格式的ECC公钥,最后介绍如何使用Java生成.解析和使用ECC公钥. ASN.1 Abstract Syntax Notation ...

  8. EF Core 2.0使用MsSql/Mysql实现DB First和Code First

    参考地址 EF官网 ASP.NET Core MVC 和 EF Core - 教程系列 环境 Visual Studio 2017 最新版本的.NET Core 2.0 SDK 最新版本的 Windo ...

  9. 原生JS实现圆周运动

    <body> <div id="ball" style="width:20px; height:20px; background:red; border ...

  10. Oracle中rownum原理介绍

    rownum原理如下:1.执行查询操作2.将第一行的row num置为13.将得到的行的row num与条件相比较,如果不匹配,则抛弃行,如果匹配,则返回行4.oracle获取下一行,然后将rownu ...