-
Mybatis中的标签查看全部
-
1.在核心配置文件中指定要执行的sql配置文件的路径,使用<mappers>,可以添加多个sql映射文件,指定资源时,使用resource属性指定资源路径即可,这样程序会自动读取sql配置文件,并创建sqlSessionFactory。 2.配置messege.xml查询数据库(sql配置文件),如图: 执行sqlSession.selectList()方法时,通过配置文件中的select标签找到sql语句,执行数据库的查询,返回的结果通过select标签中resultMap这样的一个属性,去查找resultMap标签,然后按照resultMap中的标签中的配置完成java属性与数据库字段的对应。 mybatis的sql语句通过xml文件进行配置 sql的配置文件中的<mapper>标签的namespace要唯一,调用sql语句,eg:sqlSession.selectList("Messages.list");//namespace的名字点上语句的ID <resultMap type="" id="Message">//映射的是封装返回结果的bean,type是bean的全类名,id要唯一(resultMap中) <id column="ID" jdbcType="VARCHAR" property="id"></id> //主键使用,column对应的是数据的字段名,jdbcType对应的是数据字段的类型,property对应的是实体的属性名 <result ></result> //其他字段使用 </resultMap> 查询语句: <select id="list" resultMap="Message">sql语句</select> 写好的sql配置文件,可在mybatis的连接配置文件中引入: <mappers> <mapper resource="sql配置文件路径" ></mapper> </mappers> <mappers>中子标签<mapper>的resource属性也是从src根目录开始算起,“.”改为“/”;如果有多个<mapper>则需添加多个。查看全部
-
mybatis核心类sqlSession,获取的方法如下: public SqlSession getSqlSession() throws IOException { //通过配置文件获取数据库连接信息 Reader reader = Resources.getResourceAsReader("Configuration.xml"); //通过配置信息构建一个SqlSessiojnFactory SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(reader); //通过sqlSessionFactory打开一个数据库会话 SqlSession sqlSession = sqlSessionFactory.openSession(); return sqlSession; }查看全部
-
SqlSession其实就是一次关于数据库的会话!<br> 每一个目录都是有它自己明确的含义,无规矩不成方圆,所以尽量的进行分层,这样子用户看代码也是比较省力的!<br> 写代码不写注释,这是非常不像话的!<br> mybatis的下载地址:https://github.com/mybatis/mybatis-3/releases 配置文件的详细路径:src/test/java/org/apache/ibatis/submiited/complex_property/Configuration.xml //通过配置文件获取数据库连接信息 Reader reader = Resources.getResourceAsReader("config/Configuration.xml"); //通过配置信息构建一个SqlSessionFactory SqlSessionFactory sqlSessionFactory = new SqlSessioFactoryBuilder.build(reader); //通过sqlSessionFactory打开一个数据库会话 SqlSession sqlSession = sqlSeesionFactory.openSession(); dao 层只是用来执行SQL语句,获取操作结果封装信息,返回结果,并不是用来加载驱动获取连接 如何分层,为什么要分层。一个servlet类包含了太多代码,把数据库相关表操作放到了dao层,把业务相关操作放到了service层,service层依赖dao层的对象,这里是直接new出来,如果采用spring框架,可以通过依赖注入dao的对象。servlet依赖service对象,一样是new的,不过这样分层不同功能的代码就分出去了。servlet作为一个控制类,基本做这几样事情:一些配置,例如设置编码,这部分重复工作可以通过过滤器统一处理。获取请求参数,当然也可以通过过滤器处理,这也是其他一些mvc框架,例如struts,springmv要做的数据绑定功能,然后是调用业务类处理业务,一个项目主要就是在写业务了。最后就是跳转页面。所以servlet应该只做控制的事情查看全部
-
MyBatis之SqlSession查看全部
-
Mybatis之SqlSession SqlSession的作用 (1)向 SQL 语句传入参数 (2)执行SQL语句 (3)获取执行SQL语句的结果 (4)事务的控制 //通过配置文件获取数据库连接信息 Reader reader=Resources.getResourceAsReaser("config/Configuration.xml"); //通过配置信息构建一个sqlSessinfactory SqlSessionFactory sqlSessionFactory=new SqlSessionfactoryBuilder(reader); //通过sqlSessionFactory打开一个数据库回话 SqlSession sqlsession=sqlSessionFactory.openSession(); 如何得到SqlSession:<br> (1)通过配置文件获取数据库连接相关信息<br> (2)通过配置信息构建SqlSessionFactory (3)通过SqlSessionFactory打开数据库回话查看全部
-
DAO层应该做的事是:执行SQL语句,获取操作结果封装信息,返回操作结果查看全部
-
Ps1:配置文件的详细路径:src/test/java/org/apache/ibatis/submiited/complex_property/Configuration.xml Ps2:小技巧:粘贴类名,再粘贴对象名,改大小写即可。 Ps3:顺序(从底层往高层):实体类-->Dao-->Service-->Servlet-->页面。 Ps4:数据库服务启动即可,无需登录数据库操作软件。 Ps5:Dao层一般与表(实体类)相关,命名一般在实体类名+“Dao”即可;Service层命名一般与Servlet命名对应。查看全部
-
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //1、设置字符编码 req.setCharacterEncoding("UTF-8"); //2、接收页面的值 String command =req.getParameter("command"); String description =req.getParameter("description"); //3、向页面传值 req.setAttribute("command", command); req.setAttribute("description", description); //4、在这里引入service层(业务层),进行数据库的操作 ListService listService=new ListService(); //5、向页面传值,将查询到的结果传到页面 req.setAttribute("messageList", listService.queryMessageList(command, description)); //6、向页面跳转 req.getRequestDispatcher("/WEB-INF/jsp/back/list.jsp").forward(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub this.doGet(req, resp); } }查看全部
-
Model: 数据表对应的模型; DAO:每个表对应一个DAO,对该表的一些操作。 Service:或Logic层,跟Servlet对应,一些相关的业务功能。 Servlet: 设置编码/过滤器;接受页面的值;向页面传值;业务需要调用service;跳转。 关于今天的出现的几个错误和学到的新知识: 1,jsp页面传值可以使用超链接形式为:地址?参数=要传的值! 2,servlet总采用request.getParameter("参数”)接收; 3,jdbc中对占位符?的复制采用setInt(index,参数)的方式index代表第几个?。 在Dao层中封装了与数据库有关的操作,在service层调用Dao层来处理业务逻辑,在servlet中调用service层中的对象来得到处理的结果,并且返回给页面 servlet的几个功能: 1.接受页面的值 2.向页面传值 3.根据业务需要,调用service 4.跳转页面 Model: 数据表对应的模型; DAO:每个表对应一个DAO,对该表的一些操作。 Service:或Logic层,跟Servlet对应,一些相关的业务功能。 Servlet: 设置编码/过滤器;接受页面的值;向页面传值;业务需要调用service;跳转。查看全部
-
@关键代码(技巧): StringBuilder sql=new StringBuilder(" select ID,COMMAND,DESCRIPTION,CONTENT from message where 1=1 "); List<String> paramList=new ArrayList<String>(); if(command!=null&&!"".equals(command.trim())){ sql.append(" and COMMAND=? "); paramList.add(command); } if(description!=null&&!"".equals(description.trim())){ sql.append(" and DESCRIPTION like '%' ? '%' ");//MySql语法:'%'空格?空格'%' paramList.add(description); } PreparedStatement pstmt=conn.prepareStatement(sql.toString()); for(int i=0;i<paramList.size();i++){ pstmt.setString(i+1,paramList.get(i)); } ResultSet rs=pstmt.executeQuery(); 注意1:PreparedStatement语句要在sql语句还没准备好后面,但要在循环前面。 注意2:为何不直接在if语句后写“?”的内容呢?因为不知道问号序号是多少,不好控制。 Ps1:Tomcat启动一般用Debug,只要不要设置断点,效果与Run是一样的,这样一来,如果想调试就设置断点即可,不需要再切换到Debug模式(Ps:Debug模式下,修改Java代码会自动上传到服务器,无需重新启动Tomcat) Ps2:sql+="";//这样写不好,因为原来的字符串占用内存还在,推荐使用StringBuffer、StringBuilder。查看全部
-
三大集合取值查看全部
-
Mybatis中SQL的配置查看全部
-
Mybatis 的SqlSession对象查看全部
-
<c:forEach>标签中有个varSatus属性,可以通过其属性值获取到本次循环的状态,如其中的index可以获取循环的次数(从0开始),可配合if标签做隔行换色的效果查看全部
举报
0/150
提交
取消