项目开发中,经常遇到哪个写法忘记了,找之前写的找了好半天。所以,都累积在这,找的时候好找,持续更新~~
<!--
大于:>
小于:<
大于等于:>=
小于等于:<=
-->
<!-- 查询是否有某个表,参数里面加% 就是查询表头一致的表名-->
<select id="isHaveTable" resultType="java.lang.String" parameterType="java.lang.String">
SHOW TABLES LIKE '${tableName}';
</select>
<!-- 删除某个表-->
<update id="deleteTable">
DROP TABLE `${tableName}`
</update>
<!-- 清空某个表-->
<update id="truncateTable">
truncate table `${tableName}`
</update>
<!-- 创建表-->
<update id="createTableForCirdataAutoDefinefieldValue">
CREATE TABLE `${tableName}` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`col1` int(11) NULL DEFAULT NULL COMMENT '备注',
`col2` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注',
`col3` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`) USING BTREE
,INDEX `index_col1` (`col1`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
</update>
<insert id="addTestTable" parameterType="java.util.Map" keyProperty="id" useGeneratedKeys="true" >
insert into test_table ( col1, col2,col3)
VALUES
( #{col1}, #{col2}, #{col3} )
insert>
<insert id="addBacth" parameterType="java.util.List">
insert into table (col1,col2,col3) values
<foreach collection="list" item="item" separator=" , " open="" close="">
( #{item.col1},#{item.col2},#{item.col3})
foreach>
insert>
<insert id="addBacthDynamic" parameterType="com.***.***.****Entity" keyProperty="id" useGeneratedKeys="true" >
insert into table (col1,col2,col3) values
<foreach collection="data" item="item" separator=" , " open="" close="">
( #{item.col1},#{item.col2},#{item.col3})
foreach>
insert>
<insert id="addBacthDynamic" parameterType="com.***.***.****Entity" keyProperty="data.id" useGeneratedKeys="true" >
insert into ${tableName} (col1,col2,col3) values
<foreach collection="data" item="item" separator=" , " open="" close="">
( #{item.col1},#{item.col2},#{item.col3})
foreach>
insert>
<update id = "updateTestTable" parameterType="java.util.Map">
update test_table set
col1=#{col1},
col2=#{col2},
col3=#{col3}
where id=#{id}
update>
<update id = "updateTestTable" parameterType="java.util.Map">
update test_table set
<if test="col1!= null and col1!= '' and col1!= 'null' ">
col1=#{col1},
if>
<if test="col2!= null and col2!= '' and col2!= 'null' ">
col2=#{col2},
if>
<if test="col3!= null and col3!= '' and col3!= 'null' ">
col3=#{col3},
if>
id=#{id}
where id=#{id}
update>
<update id="updateFinalPlan" parameterType="java.util.Map">
update `${tableName}` set
<if test="col1!= null and col1!= '' and col1!= 'null' ">
col1=#{col1},
if>
<if test="col2!= null and col2!= '' and col2!= 'null' ">
col2=#{col2},
if>
<if test="col3!= null and col3!= '' and col3!= 'null' ">
col3=CONCAT(col3,#{col3}),
if>
id=#{id}
where id=#{id}
update>
<delete id="deleteTestTable" parameterType="java.util.Map">
delete from test_table where id=#{id}
delete>
<select id="findAllByPage" parameterType="java.util.Map" resultType="java.util.Map">
select * from test_table where 1=1
<if test="col1!= null and col1!= '' and col1!= 'null' ">
and col1=#{col1},
if>
<if test="col2!= null and col2!= '' and col2!= 'null' ">
and col2=#{col2},
if>
<if test="col3!= null and col3!= '' and col3!= 'null' ">
and col3=#{col3},
if>
limit #{start}, #{pageSize}
select>
<select id="findDynamicData" parameterType="java.util.Map" resultType="java.util.Map">
select * from (
<foreach collection="tableNameList" item="tableName" separator=" union all " open="" close="">
(
select * , '${tableName}' as table_name
from ${tableName} where 1=1
<if test="col1!= null and col1!= '' and col1!= 'null' ">
col1=#{col1},
if>
<if test="col2!= null and col2!= '' and col2!= 'null' ">
col2=#{col2},
if>
<if test="ids != null ">
and other_id in
<foreach collection="ids" item="item" separator=" , " open=" (" close=")">
#{item}
foreach>
if>
)
foreach>
) as alltable
limit #{start}, #{pageSize}
select>
<select id="findAll" parameterType="java.util.Map" resultType="java.util.Map">
select *
from (
select IFNULL(T16.col11 ,0) ttttt1, ,T1.*,
IFNULL(DATEDIFF(T2.col5 ,T2.col4 ),-999) `day`
,case when T2.id is null then '0' else '1' end as have_col
, CONCAT(T3.col5 ,'-',T1.col1 ) as ttttt2
from (
table1 T1 left join table2 T2 on T1.id= T9.id
where 1=1
<if test='col1== "1" '>
and ifnull(col1,-1) = -1
if>
<if test="col2 != null and col2 != '' and col2 != 'null' ">
and DATEDIFF(T2.col3 ,T2.col2 ) >= #{col2 }
if>
<if test="col5 != null and col5 != '' and col5 != 'null' ">
and T6.col5 like concat ('%', #{col5 } ,'%')
if>
order by `day` desc
) aaaa
where 1=1
limit #{start}, #{pageSize}
select>
<resultMap id="info" type="com.***.***.***Entity">
<id property="id" column="id"/>
<result property="col1" column="col1"/>
<result property="col2" column="col2"/>
<collection property="childList" resultMap="childs"/>
resultMap>
<resultMap id="childs" type="com.***.***.***Entity">
<id property="lid" column="lid"/>
<result property="col1" column="col1"/>
<result property="col2" column="col2"/>
resultMap>
<select id="getList" parameterType="java.util.Map" resultMap="info">
select T1.*,T2.*
from table1 T1
left join table1 T2 on T2.id=T1.id
select>
<resultMap id="info" type="java.util.Map">
<id property="id" column="id"/>
<result property="col1" column="col1"/>
<result property="col2" column="col2"/>
<collection property="childList" javaType="java.util.ArrayList" resultMap="childs"/>
resultMap>
<resultMap id="childs" type="java.util.Map">
<id property="child_id" column="child_id"/>
<result property="col1" column="col1"/>
resultMap>
<select id="getList" parameterType="java.util.Map" resultMap="info">
select T1.*,T2.*
from table1 T1
left join table1 T2 on T2.id=T1.id
select>
where 1=1
<if test="name != null ">
and name like concat ( '%',#{name},'%')
if>
where 1=1
<if test="name != null ">
and name like '%'||#{name}||'%'
if>
<insert id="addOrUpdate" parameterType="java.util.Map" keyProperty="id" useGeneratedKeys="true">
INSERT INTO table(id,col1,col2)
VALUES (#{id},#{col1},#{col2})
ON DUPLICATE KEY UPDATE
col1= #{col1},col2=#{col2}
</insert>
mybatis-config.xml的配置文件
DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="org.sqlite.JDBC"/>
<property name="url" value="jdbc:sqlite:data.db"/>
dataSource>
environment>
environments>
<mappers>
<package name="com.**.****.mapper"/>
mappers>
configuration>
pom文件的build如下
<build>
<resources>
<resource>
<directory>src/main/resourcesdirectory>
<includes>
<include>**/*.propertiesinclude>
<include>**/*.xmlinclude>
<include>readme.txtinclude>
includes>
<filtering>truefiltering>
resource>
<resource>
<directory>src/main/java/directory>
<includes>
<include>**/*.xmlinclude>
includes>
<filtering>truefiltering>
resource>
resources>
<plugins>
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-compiler-pluginartifactId>
<configuration>
<source>1.8source>
<target>1.8target>
configuration>
plugin>
plugins>
build>
DataSourceUtil数据库连接工具
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.InputStream;
/**
* @Auther: wd
*/
public class DataSourceUtil {
private static SqlSessionFactory ssf;
private static SqlSessionFactory getSsf() {
if (ssf == null) {
synchronized (DataSourceUtil.class) {
if (ssf == null) {
try {
String resource = "mybatis-config.xml";
InputStream inputStream = null;
inputStream = Resources.getResourceAsStream(resource);
ssf = new SqlSessionFactoryBuilder().build(inputStream);
} catch (Exception e) {
System.out.println("设置数据库打开属性失败:" + e.getMessage());
Log.error("【数据库】:设置数据库打开属性失败",e.getMessage());
ssf = null;
}
}
}
}
return ssf;
}
public static SqlSession getSqlSession() {
try {
return getSsf().openSession();
} catch (Exception e) {
Log.error("【数据库】:打开SqlSession异常",e.getMessage());
return null;
}
}
}
mapper接口
import java.util.Map;
public interface DataMapper {
Integer add(Map data);
}
/**
* @Auther: wd
*/
public class DataService {
public boolean add(Map data) {
SqlSession session = DataSourceUtil.getSqlSession();
try {
DataMapper mapper = session.getMapper(DataMapper.class);
Integer add = mapper.add(data);
session.commit();
if (add == 0) {
return false;
} else {
return true;
}
} catch (Exception e) {
Log.error("【写数据库】添加数据时异常,数据是" + data);
Log.error(e.getMessage());
return false;
} finally {
session.close();
}
}
}
<select id="findData" parameterType="java.util.Map" resultType="java.util.Map">
select * from (
<foreach collection="tableNameList" item="tableName" separator=" union all " open="" close="">
select * from ${tableName} where 1=1
<if test="col1!= null ">
and col1= #{col1}
if>
<if test="col2!= null ">
and col2= #{col2}
if>
foreach>
) as alltable
select>
<update id="createTableForData" parameterType="java.lang.String">
CREATE TABLE ${tableName} (
"id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
"col1" integer,
"col2" integer,
"col3" text
);
update>
<update id="createIndex" parameterType="java.lang.String">
CREATE INDEX "index_col1_col2"
ON ${tableName} (
"col1" ASC,
"col2" ASC
);
update>
<select id="isHavingTable" resultType="java.lang.Integer" parameterType="java.lang.String">
select count(*) from sqlite_master where name=#{tableName}
select>
<select id="findDataTableNames" resultType="java.lang.String">
select name from sqlite_master where type='table' and name like 'title%' order by name
select>