[url=][/url]
package com.oracle.pojo;public class QueryVo { private User user; public User getUser() { return user; } publicvoid setUser(User user) { this.user = user; } @Override public String toString() { return "QueryVo [user=" + user + "]"; } }[url=][/url]
[url=]
[/url]
<!--根据姓名和性别查询用户 使用where标签代替以前的 1=1 再加上if这样就可以即使没有一个条件一样可以执行sql语句或者有其中一个!--> <select id="getUserBySexAndUserName" parameterType="user" resultType="user"> <!-- include标签加载sql片段,后面是其片段的id --> <include refid="get"></include> <!-- where标签:一是添加关键字where,二是处理第一个and关键字 --> <where> <if test="username!=null and username!=''"> and username like "%"#{username}"%" </if> <if test="sex!=null and sex!=''"> and sex =#{sex} </if> </where> </select> <!--SQL片段 -Sql中可将重复的sql提取出来,使用时用include引用即可,最终达到sql重用的目的。一般用于表连接时查询多个字段的时候--> <sql id="get"> select * from user </sql> <!-- 根据多个条件查询 --> <select id="getUserByQuery" parameterType="Query" resultType="user"> select * from user where id in <!-- foreach标签,进行遍历 --> <!-- collection:遍历的集合,这里是Query的ids属性 --> <!-- item:遍历的项目,可以随便写,但是和后面的#{}里面要一致 --> <!-- open:在前面添加的sql片段 --> <!-- close:在结尾处添加的sql片段 --> <!-- separator:指定遍历的元素之间使用的分隔符 --> <foreach collection="ids" item="i" open="(" close=")" separator=","> #{i} </foreach> </select> [url=]
[/url]
[url=]
[/url]
<!--查询所有的订单信息以及其关联的用户信息 --> <!-- 因为两个表是一对一!为使用resultMap,所以在orders下添加私有的User类对应的user属性,因为无法将数据映射到user里面 所以开始下面的手动映射 --> <resultMap type="orders" id="orderUserResultMap"> <id property="id" column="id" /> <result property="userId" column="user_id" /> <result property="number" column="number" /> <result property="createtime" column="createtime" /> <result property="note" column="note" /> <!-- association :配置一对一属性 --> <!-- property:order里面的User属性名 --> <!-- javaType:属性类型 --> <association property="user" javaType="user"> <!-- id:声明主键,表示user_id是关联查询对象的唯一标识--> <id property="id" column="user_id" /> <result property="username" column="username" /> <result property="address" column="address" /> </association></resultMap><!-- 一对一关联,查询订单,订单内部包含用户属性 --><select id="getOrdersUser" resultMap="orderUserResultMap"> SELECT o.id, o.user_id userId, o.number, o.createtime, o.note, u.username, u.address FROM `orders` o LEFT JOIN `user` u ON o.user_id =u.id</select>[url=]
[/url]
[url=]
[/url]
<!-- 查询所有的用户信息以及对应的订单信息 --> <resultMap type="user" id="getAllUser"> <id property="id" column="id"/> <result property="username" column="username"/> <result property="birthday" column="birthday"/> <result property="sex" column="sex"/> <result property="address" column="address"/> <!--一对多的关系 property是指集合的属性名字 javaType是指类型 ofType是泛型的意思--> <collection property="list" javaType="list" ofType="orders"> <!-- 配置主键,是关联Order的唯一标识 --> <id property="id" column="oid"/> <result property="number" column="number"/> <result property="createtime" column="createtime"/> <result property="note" column="note"/> </collection> </resultMap> <select id="getUserOrders" resultMap="getAllUser"> SELECT u.id, u.username, u.birthday, u.sex, u.address, o.id oid, o.number, o.createtime, o.note FROM `user` u LEFT JOIN `orders` o ON u.id = o.user_id </select>[url=]
[/url]
[url=]
[/url]
public class User { private Integer id; private String username; private String birthday; private String sex; privateString address; private List<Orders> list;//一对多,得list[url=]
[/url]
- 修改要生成的数据库表
- pojo文件所在包路径
- Mapper所在的包路径[url=]
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration> <context id="testTables" targetRuntime="MyBatis3"> <commentGenerator> <!-- 是否去除自动生成的注释 true:是 : false:否 --> <property name="suppressAllComments" value="true" /> </commentGenerator> <!--数据库连接的信息:驱动类、连接地址、用户名、密码 --> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/mybatis" userId="root" password="root"> </jdbcConnection> <!-- <jdbcConnection driverClass="oracle.jdbc.OracleDriver" connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:yycg" userId="yycg" password="yycg"> </jdbcConnection> --> <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和 NUMERIC 类型解析为java.math.BigDecimal --> <javaTypeResolver> <property name="forceBigDecimals" value="false" /> </javaTypeResolver> <!-- targetProject:生成PO类的位置 --> <javaModelGenerator targetPackage="cn.oracle.ssm.po" targetProject=".\src"> <!-- enableSubPackages:是否让schema作为包的后缀 --> <property name="enableSubPackages" value="false" /> <!-- 从数据库返回的值被清理前后的空格 --> <property name="trimStrings" value="true" /> </javaModelGenerator> <!-- targetProject:mapper映射文件生成的位置 --> <sqlMapGenerator targetPackage="cn.oracle.ssm.mapper" targetProject=".\src"> <!-- enableSubPackages:是否让schema作为包的后缀 --> <property name="enableSubPackages" value="false" /> </sqlMapGenerator> <!-- targetPackage:mapper接口生成的位置 --> <javaClientGenerator type="XMLMAPPER" targetPackage="cn.oracle.ssm.mapper" targetProject=".\src"> <!-- enableSubPackages:是否让schema作为包的后缀 --> <property name="enableSubPackages" value="false" /> </javaClientGenerator> <!-- 指定数据库表 --> <table schema="" tableName="user"></table> <table schema="" tableName="order"></table> </context></generatorConfiguration>
[url=]