**maven 增删查改**
**maven多表查询**
**SqlUtils**
package com.bj.util;
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.IOException;
import java.io.Reader;
public class SqlUtils {
static SqlSessionFactory factory;
static ThreadLocal<SqlSession> threadLocal=new ThreadLocal<SqlSession>();
static{
try {
Reader reader= Resources.getResourceAsReader("mybatis.xml");
factory=new SqlSessionFactoryBuilder().build(reader);
} catch (IOException e) {
e.printStackTrace();
}
}
//打开session
public static SqlSession getsession(){
SqlSession session= threadLocal.get();
if(session==null){
session=factory.openSession();
threadLocal.set(session);
}
System.out.println(session);
return session;
}
//关闭session
public static void closesession(){
SqlSession session= threadLocal.get();
if(session!=null){
session.close();
// threadLocal.set(null);
threadLocal.remove();
}
}
}
maven 增删查改
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--定义sql
约定大于配置 namespace="接口的路径" -->
<mapper namespace="com.bj.dao.UserDao">
<!---->
<!--id="dao层的方法名"
注意:sql语句中不要添加分号
resultType:设置返回结果的类型
注意:resultType在做结果映射的时候,条件:
类名=表名 列明=属性名
写错 会出现 Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException:
### Error building SqlSession.
省略实现类情况下 id
-->
<!--resultMap 结果映射 一般用在多表操作-->
<resultMap id="user" type="com.bj.bean.User">
<id property="id" column="id"></id>
<result property="username" column="username"></result>
</resultMap>
<!--分页查询 家模糊查询-->
<select id="findAll" resultType="userClass">
select * from user
where 1=1
<if test="uc!=null and uc.username!=null and uc.username!=''">
and username like '%${uc.username}%'
</if>
<if test="uc!=null and uc.password!=null and uc.password!=''">
and password like '%${uc.password}%'
</if>
<if test="uc!=null and uc.gender!=null and uc.gender!=''">
and gender like '%${uc.gender}%'
</if>
limit #{index},#{size}
</select>
<!--增删改的时候不需要设置resultType,默认返回受影响的行数-->
<delete id="deleteByid" >
delete from user where id=#{id}
</delete>
<!--增删改传参-->
<!--新增 useGeneratedKeys="true" keyProperty="id" 设置获得新增数据的id-->
<insert id="insertuser" useGeneratedKeys="true" keyProperty="id">
insert into user (username,password,gender)values(#{username},#{password},#{gender})
</insert>
<!--修改-->
<update id="update">
update user set username=#{username},password=#{password},username=#{username} where id=#{id}
</update>
<!--查一行-->
<select id="selectOne" resultType="user">
select *from user where id=#{id}
</select>
<!--<!–查总条数–>-->
<select id="count" resultType="int">
select count(*) from user
</select>
<!--查询多条 array-->
<select id="findByids" resultType="user">
select *from user where id in
<foreach collection="array" open="(" close=")" item="id" separator=",">
#{id}
</foreach>
</select>
<!--查询多条 list-->
<select id="findByidlist" resultType="user">
select *from user where id in
<foreach collection="list" open="(" close=")" item="id" separator=",">
#{id}
</foreach>
</select>
<!--查询多条 map-->
<select id="findByidmap" resultType="user">
select * from user where id in(
<foreach collection="ids" item="id" separator=",">
#{id}
</foreach>)
</select>
<!--resultType="map"-->
</mapper>
**maven多表查询**
**一对一**
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bj.dao.HusbandDao">
<!-- 一对一 -->
<resultMap id="hus" type="com.bj.bean.Husband">
<id property="husid" column="husid"></id>
<result property="husname" column="husname"></result>
<association property="wife" javaType="com.bj.bean.Wife"> <!-- husband类中的wife属性-->
<id property="wifeid" column="wifeid"></id>
<result property="wifename" column="wifename"></result>
</association>
</resultMap>
<select id="findhus" resultMap="hus">
select *from husband hu ,wife
where hu.wid=wife.wifeid
</select>
</mapper>
一对多 多对一
**<?xml version="1.0" encoding="utf-8" ?>
<resultMap id="stud" type="student"> <!-- 多对一的 多-->
<result property="address" column="address" ></result>
<result property="username" column="username" ></result>
<association property="classes" javaType="classes"> <!--映射关系 多对一 ass -->
<id property="classid" column="classid"></id> <!--主键映射-->
<result property="classnum" column="classnum"></result>
<result property="classname" column="classname"></result>
</association>
</resultMap>
<!--查班级 一对多-->
<resultMap id="clas" type="com.bj.bean.Classes"> <!--type=com.bj.bean.classes 别名-->
<id property="classid" column="classid"></id>
<result property="classnum" column="classnum"></result>
<result property="classname" column="classname"></result>
<collection property="students" ofType="com.bj.bean.Student"> <!--实体类中映射关系-->
<result property="address" column="address" ></result>
<result property="username" column="username" ></result>
<result property="sex" column="sex" ></result>
</collection>
</resultMap>
<!--id 方法名 多表 多对一 -->
<select id="findallstudent" resultMap="stud">
SELECT *FROM student stu,classes cla WHERE stu.classid=cla.classid
SELECT FROM student stu,classes cla WHERE stu.classid=cla.classid
*
多对多
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bj.dao.MenuDao">
<resultMap id="menu" type="com.bj.bean.Menu">
<id property="menuid" column="menuid"></id>
<result property="menuname" column="menuname"></result>
<collection property="roles" ofType="com.bj.bean.Role">
<id property="roleid" column="roleid"></id>
<result property="rolename" column="rolename"></result>
</collection>
</resultMap>
<!--多对多查询-->
<select id="findallmenu" resultMap="menu">
select * from role ,menu,middle
where middle.menuid=menu.menuid and middle.roleid=role.roleid
</select>
</mapper>