Maven+MyBaits使用总结

来源:互联网 发布:淘宝素材百度网盘 编辑:程序博客网 时间:2024/06/05 07:27

1.使用MyBaits来简化对数据库的操作

2.需要两个配置文件,一个是总体配置文件,一个是Mapper配置文件,前者是配置全局,包含jdbc的连接,后者包含映射关系,里面定义了各种sql操作

3.先上总体配置文件myBaits_cft.xml

<?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>      <typeAliases>        <typeAlias type="dao.Data" alias="Data" />    </typeAliases>          <!-- 环境配置 -->      <environments default="development">          <environment id="development">              <transactionManager type="JDBC"/>              <!-- 数据库连接相关配置 ,这里动态获取jdbc.properties文件中的内容-->              <dataSource type="POOLED">                  <property name="driver" value="com.mysql.jdbc.Driver"/>                  <property name="url" value="jdbc:mysql://localhost:3306/information"/>                  <property name="username" value="root"/>                  <property name="password" value="123456"/>              </dataSource>          </environment>      </environments>             <mappers>        <mapper resource="./mapper.xml"/>    </mappers>      </configuration>    
4.再上mapper.xml

<?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="src.main.java.dao.Operation"><!-- 定义添加数据的操作 --><insert id="addData" parameterType="dao.Data"useGeneratedKeys="true" keyProperty="id">insert into data(id,question,answer,typeId)values(#{id},#{question},#{answer},#{typeId})</insert></mapper>
这里重点要说一下这个mapper.xml的作用:

首先,它的namespace要指向一个接口,这个接口里定义了各种方法,就是对数据库的增删改查那些方法,然后,它下面可以添加操作,

这些操作有自己的id ,每一个id要和接口中的方法名字匹配。只有这样,接口中的方法才能映射到mapper.xml中对数据库的操作方法上。

5.注意事项:这连个xml文件要直接丢在resources文件夹下,外面不要再有包,否则读取不到会报错

6.要定义一个类,这个类就是数据库中的数据元组,我这里的类是”问题-答案“的键值对,内容如下:

package dao;/* * 每一个问答都是一个Data */public class Data {private int id;private String question;private String answer;private int typeId;public Data(int id,String question,String answer,int typeId) {this.id=id;this.question=question;this.answer=answer;this.typeId=typeId;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getQuestion() {return question;}public void setQuestion(String question) {this.question = question;}public String getAnswer() {return answer;}public void setAnswer(String answer) {this.answer = answer;}public int getTypeId() {return typeId;}public void setType(int typeId) {this.typeId = typeId;}}


7.使用方法如下:

1.首先定义一个类,方便我们获取SqlSession,我们最后的所有操作都是通过SqlSession调用方法来完成

package dao;import java.io.IOException;import java.io.InputStream;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;/* * 用来获得Session的接口 */public class MyBaits {private static SqlSessionFactory sf=null;//初始化工厂public static void init() throws IOException {String resource="mybaits_cfg.xml";InputStream is=Resources.getResourceAsStream(resource);sf=new SqlSessionFactoryBuilder().build(is);}//获取Sessionpublic static SqlSession getSession() {if(sf==null) {try {init();}catch(IOException e) {e.printStackTrace();}}return sf.openSession();}}

8.下面是test方法

package dao;import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import org.apache.ibatis.session.SqlSession;public class Test {//从txt中读取数据并插入到数据库中的操作public void addData() {SqlSession session=MyBaits.getSession();File file=new File("src/main/resources/Texts/publicWord.txt");try {BufferedReader reader=new BufferedReader(new FileReader(file));String temp=null;int id=1;int type=1;int line=0;while((temp=reader.readLine())!=null) {if(line<2) {line++;continue;}//获取txt中的内容,并将内容分为question和String content[]=temp.split("--");String question=content[0];//判断是否要更新type的值if(question.equals("认识数据问题列表")||question.equals("作业1问题列表")||question.equals("聚类知识点问题列表"))type++;String answer=content[1];Data data=new Data(id,question,answer,type);session.selectOne("src.main.java.dao.Operation.addData", data);id++;System.out.println("插入数据中---");}reader.close();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {session.close();}}public static void main(String[] args) {new Test().addData();}}

大致流程:先获得SqlSession对象,然后通过调用session.selectOne方法来完成对SQL的操作。第一个参数表明选用的是哪个sql方法,它的路径应该是mapper.xml中定义的

namespace的路径加上里面的某个方法名,而且,该方法已经在mapper下面的各种操作方法中定义并实现,而且该方法名应该等于mapper下面相应操作的id值,第二个参数是mapper定义的sql方法的参数

10.最后成功实现往数据库中添加参数的功能

11.各种依赖包可以通过操作POM.XML来实现




原创粉丝点击