mybatis总结(2)

  1. 回顾 mybatis
    1. 核心配置文件 conf.xml
      1. 放在src/resources下
      2. settings
        1. log4j
      3. 别名
      4. 数据库连接池
      5. 加载映射文件
    2. 映射文件
      1. mapper namespace=""
      2. id、parameterType、@Param
      3. insert
        1. selectKey
      4. update
      5. delete
      6. select resultType="vo,map"
      7. sql
      8. resultMap
        1. <resultMap type="emp" id="myEmp" >
                  <id column="id" property="id"/>
                  <result column="name" property="name"/>
               
                  <association property="dept" javaType="dept">
                      <id column="deptid" property="id"/>
                      <result column="dname" property="name"/>
                  </association>
          </resultMap>
    3. 重点是 resultMap 的多对一(多个员工对应一个部门)
  2. 继续 resultMap 的一对多(一个部门对应多个员工)
    1. BookMapper.xml
    2. BookDao.java 里增加 public List<Dept> getDepts();
    3. TestBook.java
    4. 控制台结果
  3. 权限四表的设计
    1. 权限几乎是每个系统都要实现的模块(功能)
    2. 权限功能一般需要设计一下几个表
      1. 用户表:id,用户名,密码
      2. 角色表:管理员,普通用户,操作员
      3. 权限表:最小的一个功能
    3. 操作
      1. 插入一个员工(可以选择角色)【代码附在最后】
      2. 查询一个员工的所有权限
    4. 动态sql
      1. mybatis最强大的功能之一;
      2. 当sql语句需要根据用户的不同请求动态生成时,就可以使用动态sql功能;
      3. 通过一系列的标记来实现
      4. 标记:if,choose when,where,set,trim,foreach
      5. if 语法
        1. <if test="条件"></if>
      6. where 语法
        1. <where>动态sql</>
        2. 作用:根据where标记中的内容是否存在来决定是否生成where,并会自动去掉where中第一个 and 或or
        3. 例子
          1.     <select id="selectEmp" parameterType="emp" resultType="emp">
                    select * from tb_emp
                    <where>
                        <if test="empName!=null">
                            empName=#{empName}
                        </if>
                        <if test="tel!=null">
                            and tel=#{tel}
                        </if>
                    </where>
                </select>
    5. 繁琐的代码地带
      1. 项目工程截图
      2. 以下为每一个文件里的代码(包括dao,service,util,vo,EmpMapper,conf,log4j,Test,pom)
        1. package com.oracle.dao;
          
          import com.oracle.vo.Emp;
          
          public interface EmpDao {
          	public void save(Emp emp);
          }
          -------------------------------------------------------------------------------------------
          package com.oracle.service;
          
          import com.oracle.vo.Emp;
          
          public interface EmpService {
          	public void save(Emp emp);
          }
          -------------------------------------------------------------------------------------------
          package com.oracle.service;
          
          import org.apache.ibatis.session.SqlSession;
          
          import com.oracle.dao.EmpDao;
          import com.oracle.util.SessionUtils;
          import com.oracle.vo.Emp;
          import com.oracle.service.EmpService;
          
          public class EmpServiceImpl implements EmpService {
          
          	@Override
          	public void save(Emp emp) {
          		// 控制事务
          		SqlSession session = SessionUtils.openSession();
          		try {
          			EmpDao dao = session.getMapper(EmpDao.class);
          			dao.save(emp);
          			session.commit();
          		} catch(Exception e) {
          			session.rollback();
          		} finally {
          			session.close();
          		}
          	}
          }
          -------------------------------------------------------------------------------------------
          package com.oracle.util;
          
          import java.io.IOException;
          
          import org.apache.ibatis.io.Resources;
          import org.apache.ibatis.session.SqlSession;
          import org.apache.ibatis.session.SqlSessionFactory;
          import org.apache.ibatis.session.SqlSessionFactoryBuilder;
          
          public class SessionUtils {
          
          	private static SqlSessionFactory factory = null;
          	static {
          		try {
          			factory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("conf.xml"));
          		} catch (IOException e) {
          			// TODO Auto-generated catch block
          			e.printStackTrace();
          		}
          	}
          	public static SqlSession openSession() {
          		return factory.openSession();
          		
          	}
          }
          -------------------------------------------------------------------------------------------
          package com.oracle.vo;
          
          public class Emp {
          	int empid;
          	String empno;
          	String password;
          	String empName;
          	String tel;
          	Role role;
          	public int getEmpid() {
          		return empid;
          	}
          	public void setEmpid(int empid) {
          		this.empid = empid;
          	}
          	public String getEmpno() {
          		return empno;
          	}
          	public void setEmpno(String empno) {
          		this.empno = empno;
          	}
          	public String getPassword() {
          		return password;
          	}
          	public void setPassword(String password) {
          		this.password = password;
          	}
          	public String getEmpName() {
          		return empName;
          	}
          	public void setEmpName(String empName) {
          		this.empName = empName;
          	}
          	public String getTel() {
          		return tel;
          	}
          	public void setTel(String tel) {
          		this.tel = tel;
          	}
          	public Role getRole() {
          		return role;
          	}
          	public void setRole(Role role) {
          		this.role = role;
          	}
          	@Override
          	public String toString() {
          		return "Emp [empid=" + empid + ", empno=" + empno + ", password=" + password + ", empName=" + empName + ", tel="
          				+ tel + ", role=" + role + "]";
          	}
          	
          }
          -------------------------------------------------------------------------------------------
          package com.oracle.vo;
          
          public class Right {
          	String rightId;
          	String rightName;
          	String rightURL;
          	public String getRightId() {
          		return rightId;
          	}
          	public void setRightId(String rightId) {
          		this.rightId = rightId;
          	}
          	public String getRightName() {
          		return rightName;
          	}
          	public void setRightName(String rightName) {
          		this.rightName = rightName;
          	}
          	public String getRightURL() {
          		return rightURL;
          	}
          	public void setRightURL(String rightURL) {
          		this.rightURL = rightURL;
          	}
          	@Override
          	public String toString() {
          		return "Right [rightId=" + rightId + ", rightName=" + rightName + ", rightURL=" + rightURL + "]";
          	}
          	
          }
          -------------------------------------------------------------------------------------------
          package com.oracle.vo;
          
          import java.util.List;
          
          public class Role {
          	int roleid;
          	String roleName;
          	String roleDesc;
          	List<Right> rights;
          	
          	public Role() {
          		super();
          	}
          	public Role(int roleid) {
          		super();
          		this.roleid = roleid;
          	}
          	public int getRoleid() {
          		return roleid;
          	}
          	public void setRoleid(int roleid) {
          		this.roleid = roleid;
          	}
          	public String getRoleName() {
          		return roleName;
          	}
          	public void setRoleName(String roleName) {
          		this.roleName = roleName;
          	}
          	public String getRoleDesc() {
          		return roleDesc;
          	}
          	public void setRoleDesc(String roleDesc) {
          		this.roleDesc = roleDesc;
          	}
          	public List<Right> getRights() {
          		return rights;
          	}
          	public void setRights(List<Right> rights) {
          		this.rights = rights;
          	}
          	@Override
          	public String toString() {
          		return "Role [roleid=" + roleid + ", roleName=" + roleName + ", roleDesc=" + roleDesc + ", rights=" + rights
          				+ "]";
          	}
          	
          }
          -------------------------------------------------------------------------------------------
          <?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.oracle.dao.EmpDao">
          	<insert id="save" parameterType="emp">
          		insert into tb_emp values(null,#{role.roleid},#{empno},#{password},#{empName},#{tel})
          	</insert>
          </mapper>
          -------------------------------------------------------------------------------------------
          <?xml version="1.0" encoding="UTF-8" ?>
          <!DOCTYPE configuration
          PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
          "http://mybatis.org/dtd/mybatis-3-config.dtd">
          <configuration>
          	
          	<settings>
              	<setting name="logImpl" value="LOG4J"/>
          	</settings>
          	
          	<typeAliases>
          		<package name="com.oracle.vo"/>
          	</typeAliases>
          	
          	<environments default="development">
          		<environment id="development">
          			<transactionManager type="JDBC" />
          			<dataSource type="POOLED">
          				<property name="driver" value="com.mysql.jdbc.Driver" />
          				<property name="url" value="jdbc:mysql://localhost:3306/project" />
          				<property name="username" value="root" />
          				<property name="password" value="root" />
          			</dataSource>
          		</environment>
          	</environments>
          	<mappers>
          		<mapper resource="com/oracle/dao/EmpMapper.xml" />
          	</mappers>
          	
          </configuration>
          -------------------------------------------------------------------------------------------
          log4j.rootLogger=DEBUG, CONSOLE, FILE
          ## for console
          log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
          log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
          log4j.appender.CONSOLE.layout.ConversionPattern=%d{MM-dd-HH:mm:ss}[%c-%L][%t][%-4r] - %m%n
          ## for file
          log4j.appender.FILE=org.apache.log4j.RollingFileAppender
          log4j.appender.FILE.File=D:/logs/log4j.log
          log4j.appender.FILE.MaxFileSize=5MB
          log4j.appender.FILE.Append = true
          log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
          log4j.appender.FILE.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} [%t] %-5p %c(line-%L) %-4r %x - %m%n
          -------------------------------------------------------------------------------------------
          package mybatisTest;
          
          import java.io.IOException;
          
          import org.apache.ibatis.session.SqlSession;
          import org.junit.After;
          import org.junit.Before;
          import org.junit.Test;
          
          import com.oracle.dao.EmpDao;
          import com.oracle.service.EmpService;
          import com.oracle.service.EmpServiceImpl;
          import com.oracle.util.SessionUtils;
          import com.oracle.vo.Emp;
          import com.oracle.vo.Role;
          
          
          public class TestBook {
          
          	@Before
          	public void setUp() throws Exception {
          	}
          
          	@After
          	public void tearDown() throws Exception {
          	}
          
          	@Test
          	public void test() throws IOException {
          		
          		Emp emp = new Emp();
          		emp.setEmpName("李逵");
          		emp.setEmpno("111");
          		emp.setPassword("hello world");
          		emp.setTel("111111");
          		emp.setRole(new Role(1));
          		
          		EmpService service = new EmpServiceImpl();
          		service.save(emp);
          	}
          
          }
          -------------------------------------------------------------------------------------------
          <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
            <modelVersion>4.0.0</modelVersion>
            <groupId>com.oracle</groupId>
            <artifactId>mybatisTest</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <dependencies>
            <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
          	<dependency>
          	    <groupId>org.mybatis</groupId>
          	    <artifactId>mybatis</artifactId>
          	    <version>3.4.6</version>
          	</dependency>
          
          	<dependency>
          		<groupId>mysql</groupId>
          		<artifactId>mysql-connector-java</artifactId>
          		<version>5.1.36</version>
          	</dependency>
          	<dependency>
          		<groupId>junit</groupId>
          		<artifactId>junit</artifactId>
          		<version>4.12</version>
          	</dependency>
          	<!-- https://mvnrepository.com/artifact/log4j/log4j -->
          	<dependency>
          	    <groupId>log4j</groupId>
          	    <artifactId>log4j</artifactId>
          	    <version>1.2.17</version>
          	</dependency>
            </dependencies>
          </project>

           

 

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、 4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.m或d论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 、1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值