mybatis的初步核心(一)
来源:互联网 发布:歌曲剪辑拼接软件 编辑:程序博客网 时间:2024/05/11 02:29
1. 作为 一个 半自动的 数据库操作框架, mybts还是很有优势的,
好比 Ak47也是 半自动步枪,比起全自动的 hibernate 在复杂数据结果集有很大优势,
下面 给具体的 步骤,(纯mybts+xml配置)
2. 首先 导入 jar包
连接的 是 mysql 数据库。
3.配置 日志文件
log4j.rootLogger=debug,Console,File
#\u5B9A\u4E49\u65E5\u5FD7\u8F93\u51FA\u76EE\u7684\u5730\u4E3A\u63A7\u5236\u53F0
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
#\u53EF\u4EE5\u7075\u6D3B\u5730\u6307\u5B9A\u65E5\u5FD7\u8F93\u51FA\u683C\u5F0F\uFF0C\u4E0B\u9762\u4E00\u884C\u662F\u6307\u5B9A\u5177\u4F53\u7684\u683C\u5F0F
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n
#\u6587\u4EF6\u5927\u5C0F\u5230\u8FBE\u6307\u5B9A\u5C3A\u5BF8\u7684\u65F6\u5019\u4EA7\u751F\u4E00\u4E2A\u65B0\u7684\u6587\u4EF6
log4j.appender.File = org.apache.log4j.RollingFileAppender
#\u6307\u5B9A\u8F93\u51FA\u76EE\u5F55
log4j.appender.File.File = logs/ssm.log
#\u5B9A\u4E49\u6587\u4EF6\u6700\u5927\u5927\u5C0F
log4j.appender.File.MaxFileSize = 10MB
# \u8F93\u51FA\u6240\u4EE5\u65E5\u5FD7\uFF0C\u5982\u679C\u6362\u6210DEBUG\u8868\u793A\u8F93\u51FADEBUG\u4EE5\u4E0A\u7EA7\u522B\u65E5\u5FD7
log4j.appender.File.Threshold = ALL
log4j.appender.File.layout = org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n
4.然后就是 数据库表的配置和创建
create table sbdept(
dept_id int primary KEY auto_increment,
dept_name VARCHAR(20)
)
create table sbemp(
emp_id int primary KEY auto_increment,
emp_name VARCHAR(20),
dept_id int ,
FOREIGN key(dept_id) REFERENCES sbdept(dept_id)
)
4-2 java工程中的 配置文件
5. 然后就是 连接数据源的 设置(还有 一些 比如::自增的键和。加载接口的映射文件 。取别名)
<span style="font-size:32px;"><?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><!-- 就是代替的 方法,用于 好更改 --><properties resource="config.properties"></properties> <!-- 当前系统相关设置 --> <settings> <setting name="logImpl" value="Log4j"/> <setting name="useGeneratedKeys" value="true"/> <setting name="cacheEnabled" value="true"/> </settings> <!-- 这是 取别名 --> <typeAliases> <typeAlias type="com.po.emp" alias="sbemp"/> <typeAlias type="com.po.dept" alias="sbdept"/> </typeAliases><!-- 连接数据库,以后交给 spring --> <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="${user}"/> <property name="password" value="${pwd}"/> </dataSource> </environment> </environments> <!-- 加载映射文件 --> <mappers> <mapper resource="com/dao/IdeptDao.xml"/><mapper resource="com/dao/IempDao.xml"/> </mappers></configuration></span>
6.然后就是 对应的 实体类的 编写
在 有父子关系的 类中 还是要写 对方
8.开始写接口
public interface IEmployeeMapper {public List<TbEmployee> findEmps();public void saveEmp(TbEmployee emp);public void savedept(dept emp);public void delteEmp(Integer deptNo);public List<dept> findbyInner();public void inserdept(dept d);}</span>9.然后就是 接口 对应的 具体的 实现xml文件(#{})其id还要与 接口中的方法 一一对应
<?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.xt.dao.IEmployeeMapper"><select id="findEmps" resultType="xtemp">select * from emp</select><insert id="saveEmp" parameterType="xtemp">insert into emp values(#{emp_id},#{dept_id},#{emp_name})</insert><insert id="savedept" parameterType="com.xt.po.dept">insert into dept values(#{dept_id},#{dept_name})</insert><delete id="delteEmp" parameterType="java.lang.Integer">delete from emp where emp_id = #{emp_id}</delete></mapper></span>9-1遇到 了 查 儿子 的时候把 部门也查出来
这时候 需要 用到 连接查询(当 数据库中的 表的列名和 类中的名字 不一样,需要 使用的 resultMap)
<span style="font-size:32px;"><?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.dao.Iemp"><!-- 连接查询 的预选 准备 --><resultMap id="result_ds" type="sbemp"> <id column="emp_id" property="empid"/> <result column="emp_name" property="empname"/> <!--从儿子这边查 多对一 数据库对应的外键 java类里面的名字 类型 --> <association column="dept_id" property="depts" javaType="sbdept"> <id column="dept_id" property="deptid"/> <result column="dept_name" property="deptname"/> </association> </resultMap> <!--具体的语句的书写,得到的 类型 就是 两个 类 的 结合 --> <select id="findbyinnerAnd" resultMap="result_ds"> select a.dept_name,b.* from sbdept a inner join sbemp b on a.dept_id=b.dept_id </select></mapper></span>
如果是 遇到 查 部门 把所有的 儿子 查出来
<span style="font-size:32px;"><?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.dao.Idept"><!-- 连接查询 的预选 准备 --><resultMap id="result_d" type="sbdept"> <id column="dept_id" property="deptid"/> <result column="dept_name" property="deptname"/> <!--从父亲这边查 一对多 数据库对应的外键 java类里面的名字 --> <collection column="dept_id" property="emps" ofType="sbemp"> <id column="emp_id" property="empid"/> <result column="emp_name" property="empname"/> </collection> </resultMap> <!--具体的语句的书写,得到的 类型 就是 两个 类 的 结合 --> <select id="findbyInner" resultMap="result_d"> select a.dept_name,b.* from sbdept a inner join sbemp b on a.dept_id=b.dept_id </select><insert id="inserdept" keyProperty="deptid"//就是这个 不包括orcl数据库parameterType="sbdept"><!-- <selectKey keyProperty="" order="BEFORE">select UUUU.nextval from dual;</selectKey> -->insert into sbdept values(default,#{deptname})</insert></mapper></span>
10. 具体的 使用在 main 函数里面(带有 自增的 插入,并且 把 主键的 数值返回,)
package com.service;public class demo {public static void main(String[] args) {try {String resource = "Mybatis.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(inputStream);SqlSession s = sf.openSession();Idept Iemps=s.getMapper(Idept.class); dept e=new dept(); e.setDeptname("工信部3");Iemps.inserdept(e);System.out.println("<>>"+e.getDeptid());s.commit();} catch (Exception e) { e.printStackTrace();}}public void c() throws IOException{String resource = "Mybatis.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(inputStream);SqlSession s = sf.openSession();Iemp Iemps=s.getMapper(Iemp.class);List<emp> empsl=Iemps.findbyinnerAnd();for(emp sfd:empsl){System.out.println("<><>><><"+sfd.getEmpname());System.out.println(".....>>"+sfd.getDepts().getDeptname());}}public void a() throws IOException{String resource = "Mybatis.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(inputStream);SqlSession s = sf.openSession();Idept ids=s.getMapper(Idept.class);List<dept> dfd=ids.findbyInner();for(dept d:dfd){System.out.println(">>>"+d.getDeptname());List<emp> es=d.getEmps();for(emp sd:es){System.out.println("<><>++"+sd.getEmpname());}}}}</span>
- mybatis的初步核心(一)
- mybatis初步学习(一)
- mybatis初步认识(一)
- myBatis初步认识(一)
- mybatis学习总结-核心配置文件mybatis-config.xml(一)
- mybatis学习总结-核心配置文件mybatis-config.xml(一)
- mybatis学习总结-核心配置文件mybatis-config.xml(一)
- mybatis学习总结-核心配置文件mybatis-config.xml(一)
- Mybatis初步一--4.29号
- MyBatis的初步使用
- mybatis的初步学习
- mybatis的初步应用
- MyBatis的核心组件
- 【SSM-MyBatis框架】Mapper.xml配置文件(mybatis的核心)
- MyBatis框架核心之(一)基本使用
- MyBatis核心SqlSessionFactory的创建
- MyBatis核心SqlSessionFactory的创建
- MyBatis核心SqlSessionFactory的创建
- QT模态对话框及非模态对话框学习
- UBUNTU 10.04安装SYSTEMTAP
- Linux:正则表达式
- Linux 套接字编程中的 5 个隐患
- 乱码问题之tomcat配置UTF8
- mybatis的初步核心(一)
- configure小记
- null可以被强制类型转换成任意类型的对象
- APT-GET在公司代理上网
- LINUX系统 多核CPU小记
- Google IO:Android内存管理主题演讲记录
- OPENMP之hello
- 高性能计算的线程模型:Pthreads 还是 OpenMP
- 409. Longest Palindrome