<!-- 找到的是你关联的那个接口类,他的包名加上类名--><mapper namespace="com.offcn.dao.UserMapper"><!-- 这个id 的名字必须跟你userMapperDao 一致 --><select id="selectAllUser" resultType="com.offcn.entity.User">
select *from smbms_user
</select><select id="selectByUser" resultType="User">/* prefix加前缀/prefixOverrides去除第一个不需要的and关键字/suffix第三个是加后缀/suffixOverrides 去除最后一个不需要的符号或关键字 */
select u.*,r.id from smbms_user u,smbms_role r
<trim prefix="where" prefixOverrides="and" suffix="and u.userRole=r.id"><if test="userRole != null">and u.userRole=#{userRole}</if><if test="userName !=null and userName != ''">
and userName like concat('%',#{userName},'%')</if></trim></select><!-- resultMap 相当于一个结果集,这个id 必须对应的是你的 resultMap的值,type 代表你的返回值类型(可以给起别名)
<id property=""></id> 只代表id 比钱的实体类的属性名, column 代表的是你的数据库列名
其它的不是id的属性就用名称resule
mabatis 的封装 是 你的数据库的列名 ,必须跟你的 实体bean的属性名相同
用 resultMap 的情况 第一种:当你的数据库的列名跟你的属性名不匹配的时候
第二种:也就是 复杂查询(一对一的关系,一对多的关系)
--><resultMap id="selectByMapResult" type="User"><id property="id" column="id"></id><result property="userName" column="userName"></result><result property="userRole" column="userRole"></result></resultMap><select id="selectByMap" parameterType="Map" resultMap="selectByMapResult">
select u.*,r.id from smbms_user u,smbms_role r where userName like concat('%',#{uName},'%') and u.userRole=#{uRole} and u.userRole = r.id
</select><resultMap id="selectByRoleResult" type="User"><id property="id" column="id"></id><result property="userName" column="userName"></result><result property="userRole" column="userRole"></result><!-- 在mybatis 配置 一对一的关系,拿到的是属性名,javaType 代表类型,可以给别名 --><association property="role" javaType="Role"><id property="id" column="id"></id><result property="roleName" column="roleName"></result><result property="roleCode" column="roleCode"></result></association></resultMap><select id="selectByRole" parameterType="User" resultMap="selectByRoleResult">
select u.*,r.id,r.roleName,r.roleCode from smbms_user u,smbms_role r where userName like concat('%',#{userName},'%') and u.userRole=#{userRole} and u.userRole = r.id
</select><resultMap id="selectByAddressResult" type="User"><id property="id" column="id"></id><result property="userName" column="userName"></result><result property="userRole" column="userRole"></result><!-- 开始配置一对多的关系,这里是 ofType(配置一对多的关系里必须加的)也是给的类型 --><collection property="addressDesc" ofType="Address"><id property="id" column="a_id"></id><result property="contact" column="contact"></result><result property="addressDesc" column="addressDesc"></result></collection></resultMap><select id="selectByAddress" parameterType="String" resultMap="selectByAddressResult">
select u.*,a.addressDesc,a.contact from smbms_user u,smbms_address a where u.userName=#{userName} and u.id=a.userId;</select><insert id="addUser" parameterType="User">
insert into smbms_user(userCode,userName,userPassword,gender,birthday)value(#{userCode},#{userName},#{userPassword},#{gender},#{birthday})</insert><!-- prefix 加上前缀 --><update id="updateUser" parameterType="User">
update smbms_user
<trim prefix="set" suffixOverrides="," suffix="where id=#{id}"><if test="userCode != null">userCode=#{userCode},</if><if test="userName != null">userName=#{userName},</if><if test="userPassword != null">userPassword=#{userPassword},</if><if test="gender != null">gender=#{gender},</if><if test="birthday != null">birthday=#{birthday},s</if></trim></update><!-- collection 第一个是你遍历的类型,每一个遍历的条目/open 以什么开始/separator 以什么分割/sclose 以什么结束
item 里面的值必须跟 foreach 里面的一样
--><select id="selectArrayUser" resultType="User">
select *from smbms_user where userRole in<foreach collection="array" item="uRole" open="(" separator="," close=")">
#{uRole}</foreach></select><select id="selectListUser" resultType="User">
select *from smbms_user where userRole in<foreach collection="list" item="uRole" open="(" separator="," close=")">
#{uRole}</foreach></select></mapper>
测试
publicclassTest{publicstaticvoidmain(String[] args){try{
SqlSession sqlSession = SqlSessionUtils.getSqlSessionUtils().sqlSession;/*------------------根据数据库表级别查询------------------*/
User user =newUser();
user.setUserRole(3);
user.setUserName("孙");
List<User> list = sqlSession.getMapper(UserMapper.class).selectByUser("孙",null);for(User u : list){
System.out.println(u.getUserName()+"\t"+u.getUserRole());}/*------------------map集合形式查询------------------*///如果你用Map 来进行传参 你所给的键名 必须跟你 userMapper 里面的那个占位符一直
Map map =newHashMap();
map.put("uName",'孙');
map.put("uRole",'3');
List<User> list = sqlSession.getMapper(UserMapper.class).selectByMap(map);for(User u : list){
System.out.println(u.getUserName()+"\t"+ u.getUserRole());}/*-----------------------------------------------*/
User user =newUser();
user.setUserRole(3);
user.setUserName("孙");
List<User> list = sqlSession.getMapper(UserMapper.class).selectByRole(user);for(User u : list){
System.out.println(u.getUserName()+"\t"+ u.getUserRole());
Role role = u.getRole();
System.out.println(role.getRoleName()+"\t"+role.getRoleCode());}/*-------------------------------------------------------------*/
List<User> list = sqlSession.getMapper(UserMapper.class).selectByAddress("祥杰");for(User u : list){
System.out.println(u.getUserName()+"\t"+u.getUserRole());
List<Address> addressList = u.getAddressDesc();for(Address a : addressList){
System.out.println(a.getAddressDesc()+"\t"+a.getContact());}}/*-------------------------添加方法-------------------------*/
User user =newUser();
user.setUserCode("hehe");
user.setUserName("呵呵");
user.setUserPassword("123123");
user.setGender(null);
user.setBirthday(null);
int num = sqlSession.getMapper(UserMapper.class).addUser(user);
System.out.println(num);/*-----------------------修改功能------------------------*/
User user =newUser();
user.setUserName("咋滴");
user.setUserCode("wawa");
user.setId(23);
int num = sqlSession.getMapper(UserMapper.class).updateUser(user);
System.out.println(num);/*---------------------------array查询------------------------------*/
List<User> list = sqlSession.getMapper(UserMapper.class).selectArrayUser(newInteger[]{2,3});for(User u :
list){
System.out.println(u.getUserName());}/*-------------------list查询------------------------*/
List<Integer> list =newArrayList<Integer>();
list.add(2);
list.add(3);
List<User> list1 = sqlSession.getMapper(UserMapper.class).selectListUser(list);for(User u :
list1){
System.out.println(u.getUserName());}}catch(Exception e){
e.printStackTrace();}}}