<!--mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<!--可以配置多套环境 用default使用-->
<environments default="development">
<environment id="development">
<!--事务管理-->
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<properties resource="db.properties"/>
方便mapper.xml中使用
还可以使用注解@Alias("")
<typeAliases>
<typeAlias type="cn.lazy.pojo.User" alias="User"/>
<package name="cn.lazy.pojo"/>
</typeAliases>
将接口与mapper.xml联系起来
<mappers>
<mapper resource=""/>
<mapper url=""/>
<mapper class=""/>
<package name=""/>
</mappers>
log4j.properties文件spring会自动加载
<settings>
<!--标准日志工厂-->
<setting name="logImpl" value="STDOUT_LOGGING"/>
<!--log4j日志-->
<!--<setting name="logImpl" value="LOG4J"/>-->
</settings>
log4j.properties
#将等级为DEBUG日志信息输出到console和file这两个目的地,console和file的定义在下面
log4j.rootLogger=debug,console,file
#console输出相关设置
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Target=System.out
log4j.appender.console.Threshold=DEBUG
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern= [%c]-%m%n
#文件输出的相关设置
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=./log/lazy.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.Threshold=DEBUG
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%p][%d{yy-MM-dd}][%c]%m%n
#日志输出级别
log4j.logger.org.mybatis=DEBUG
log4j.logger.java.sql=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
最基本的例子
<select id="getUserById" parameterType="int" resultType="User">
select *
from user
where id = #{id}
</select>
<!--对象中的属性,可以直接取出来 名字要一致-->
<insert id="add" parameterType="User">
insert into user
values (#{id}, #{name}, #{password})
</insert>
<update id="updateById" parameterType="User">
update user
set name=#{name},
password=#{password}
where id = #{id}
</update>
<delete id="deleteById" parameterType="int">
delete
from user
where id = #{id}
</delete>
<!--结果集映射 用于解决名字不一致 一样的可以不用写-->
<resultMap id="userMap" type="User">
<result column="id" property="id"/>
<result column="name" property="name"/>
<result column="password" property="pwd"/>
</resultMap>
<!--查询语句-->
<select id="getUserList" resultMap="userMap">
select *
from user
</select>
<select id="getTeacher" resultMap="map">
select s.id sid, s.name sname, t.id tid, t.name tname
from student s,
teacher t
where s.tid = t.id and t.id = 1;
</select>
<resultMap id="map" type="Teacher">
<result property="id" column="tid"/>
<result property="name" column="tn"/>
<collection property="student" ofType="Student">
<result property="id" column="sid"/>
<result property="name" column="sn"/>
</collection>
</resultMap>
方法一
<select id="getStudent" resultMap="map">
select * from student
</select>
<resultMap id="map" type="Student">
<result property="id" column="id"/>
<result property="name" column="name"/>
<association property="teacher" column="tid" javaType="Teacher" select="getTeacher"/>
</resultMap>
<select id="getTeacher" resultType="Teacher">
select * from teacher
</select>
方法二 推荐使用
<select id="getStudent" resultMap="map">
select s.id sid,s.name sn ,t.id tid ,t.name tn
from student s,teacher t
where s.tid = t.id
</select>
<resultMap id="map" type="Student">
<result property="id" column="sid"/>
<result property="name" column="sn"/>
<association property="teacher" javaType="Teacher">
<result property="id" column="tid"/>
<result property="name" column="tn"/>
</association>
</resultMap>
<if test=""></if>
<choose>
<when test=""></when>
<otherwise></otherwise>
</choose>
<!--可以自动过滤第一个 AND 或者 OR-->
<where></where>
<!--prefixOverrides 与 suffixOverrides 是删除第一个 最后一个连接符-->
<trim prefix="WHERE" prefixOverrides="AND |OR ">
<if test="id!=null">AND t.id=#{id}</if>
<if test="name!=null">OR t.name=#{name}</if>
</trim>
<trim prefix="set" suffixOverrides=",">
<if test="id!=null">t.id=#{id},</if>
</trim>
<!--可以引用其他文件的sql 引入需要加 namespace-->
<sql id="sql1"></sql>
<include refid="sql1"></include>
//别名 写在类上面
@Alias("")
//sql语句 代替mapper.xml 建议简单sql使用注解
@Select("")
@Insert("")
@Delete("")
@Update("")
//写在方法的每一个参数前 用于向sql语句对应传值.
@Param("")
MyBatis Generator,简称MBG
它只需要很少量的简单配置,就可以完成大量的表到Java对象的生成工作,拥有零出错和速度快的优点
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.6</version>
</dependency>
<!--mybatis generator-->
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.4.0</version>
<configuration>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
<executions>
<execution>
<id>Generate MyBatis Artifacts</id>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.4.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
</dependencies>
</plugin>
</plugins>
generatorConfig.xml
<?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>
<properties resource="db.properties"/>
<!--<classPathEntry location="mysql-connector-java-8.0.23.jar"/>-->
<context id="simple" targetRuntime="MyBatis3Simple">
<commentGenerator>
<property name="suppressDate" value="true"/>
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!--数据库链接-->
<jdbcConnection driverClass="${db.driver}"
connectionURL="${db.url}"
userId="${db.username}"
password="${db.password}">
<property name="nullCatalogMeansCurrent" value="true"/>
</jdbcConnection>
<!--是否强制DECIMAL和NUMERIC类型的字段转换为Java类型的java.math.BigDecimal-->
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!--实体类生成配置-->
<javaModelGenerator
targetPackage="com.lazy.lazyshop.pojo"
targetProject="src/main/java">
<property name="enableSubPackage" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!--Mapper生成配置-->
<sqlMapGenerator
targetPackage="com.lazy.lazyshop.dao"
targetProject="src/main/java">
<property name="enableSubPackage" value="true"/>
</sqlMapGenerator>
<!--Dao生成配置-->
<javaClientGenerator
targetPackage="com.lazy.lazyshop.dao"
targetProject="src/main/java"
type="XMLMAPPER">
<property name="enableSubPackage" value="true"/>
</javaClientGenerator>
<!--重命名 % 所有的文件名-->
<table tableName="%"
enableCountByExample="false"
enableUpdateByExample="false"
enableDeleteByExample="false"
enableSelectByExample="false"
selectByExampleQueryId="false">
<generatedKey column="id" sqlStatement="Mysql"/>
<!--替换-->
<!--例:数据库中的名:lazy_user 生成后本该:LazyUser 经过下面修改:User-->
<domainObjectRenamingRule searchString="^Lazy" replaceString=""/>
</table>
</context>
</generatorConfiguration>
插件不显示
<pludins>
放在了<pluginManagement>
里面 应同级
Cannot instantiate object of type null
Dao生成配置少写 type="XMLMAPPER"