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. Hibernate项目搭建所需Jar包合集 5.0.7版本 免费下载【微云网盘】

    Hibernate合集[微云网盘]

  3. java项目导出可执行jar包 配置文件 及运行方法

    1.选择需要生成jar包的项目,右键项目 export 2.在导出的选择框里,选择Runnable JAR file,即可直接运行的jar包程序 3.选择配置文件的项目 指定导出的位置 Copy re ...

  4. Android Studio 在项目中引用第三方jar包

    在Android Studio项目中引用第三方jar包的方法: 步骤: 1.在build.gradle文件中添加如下代码: 备注:要添加在Android作用域下 sourceSets {main {j ...

  5. 条理清晰的搭建SSH环境之添加所需jar包

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

  6. JAVA项目打成可执行jar包

    java项目打jar包分为2种情况: 一.java项目没有导入第三方jar包 这时候打包就比较简单: 1. 首先在Eclipse中打开项目, 右键点击项目,选择"Export": ...

  7. Nexus-在项目中使用Maven私服,Deploy到私服、上传第三方jar包、在项目中使用私服jar包

    场景 Ubuntu Server 上使用Docker Compose 部署Nexus(图文教程): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/ ...

  8. 关于如何正确地在android项目中添加第三方jar包

                  在android项目中添加第三方jar包虽然不是一个很复杂的问题,但是确实给很多开发者带来了不小的困扰.我自己就曾经碰到过calss not found exception ...

  9. java发送邮件所需jar包_javamail 发邮件所需jar 包两个 activation.jar,mail.jar | 学步园...

    javamail 所需jar 包两个 activation.jar,mail.jar(放在邮箱里了) index.jsp 填写相关信息.用来发邮件的邮箱和密码一定要写对 发送电子邮件 发送电子邮件 收 ...

最新文章

  1. Object类型转换为long或者Long
  2. 架构实战项目心得(三):JAVA和MAVEN的环境配置
  3. python 内置open()函数与os.open()函数的区别(打开文件)
  4. dubbo protocol port 消费者端_springboot整合dubbo设置全局唯一ID进行日志追踪
  5. 【笔记】iOS开发基础笔记二
  6. Java集合之List的equals方法
  7. Exchange 迁移 Public Folder 公共文件夹
  8. Bailian3238 生日相同【稳定排序】
  9. 锁存器(74HCT573)使用
  10. ajaxpro 下载 dll 资源集锦及示例大结局
  11. 通过CSS在金钱单位前加上货币符号
  12. 积分商城消费系统定制
  13. # 鸡汤贴(汇聚三观摘要)
  14. Digital Asset与国际衍生品协会携手,布局智能合约在衍生品交易中的使用
  15. 网页JS自动化脚本(一)安装油猴或暴力猴等脚本管理器并新建脚本
  16. 二、Excel大纲—基础篇
  17. 用ADC0809实现八通道采集
  18. [植树造林小游戏1.1]
  19. 零基础而且英语不好可以学java吗
  20. python编程控制机器人_python人工智能机器人工具书籍: Learn Robotics Programming 2018

热门文章

  1. VTK:轮廓 Glow Pass用法实战
  2. wxWidgets:wxHelpEvent类用法
  3. wxWidgets:wxDCClipper类用法
  4. Wilcox:子类化顶级窗口
  5. boost::mpl::less相关的测试程序
  6. boost::filesystem模块实现打印window属性的测试程序
  7. boost::fibers::buffered_channel< std::string >用法的测试程序
  8. boost::core模块lightweight的测试实例
  9. Boost::context模块fiber的jump_void测试程序
  10. Boost:逐步定义的测试程序