Mybatis运作流程(手动方式创建sqlSessionFactory)
来源:互联网 发布:html5 炫酷展示页源码 编辑:程序博客网 时间:2024/06/05 20:23
1. Mybatis核心配置文件 Configuration.xml (为了创建sqlSessionFactory)
<span style="font-size:18px;"><?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></span>
<span style="font-size:18px;"></span>
<span style="font-size:18px;"> <!--为User类定义别名--> <typeAliases> <typeAlias alias="User" type="com.yihaomen.mybatis.model.User"/> <typeAlias alias="Article" type="com.yihaomen.mybatis.model.Article"/> </typeAliases> <span style="white-space:pre"></span><!--数据库连接参数并开启事物--> <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://127.0.0.1:3306/mybatis?characterEncoding=utf8" /><property name="username" value="root"/><property name="password" value="password"/></dataSource></environment></environments><!--User实体所有可能的sql语句映射文件--><mappers> <mapper resource="com/yihaomen/mybatis/model/User.xml"/></mappers></configuration></span>
</pre><pre name="code" class="html">
<span style="font-size:18px;"><?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"><!-- namespace参数指定接口 --><mapper namespace="com.yihaomen.mybatis.inter.IUserOperation"><select id="selectUserByID" parameterType="int" resultType="User"> select * from `user` where id = #{id}</select><!-- 为了返回list 类型而定义的returnMap --><resultMap type="User" id="resultListUser"> <id column="id" property="id" /> <result column="userName" property="userName" /> <result column="userAge" property="userAge" /> <result column="userAddress" property="userAddress" /> </resultMap><!-- 返回list 的select 语句,注意 resultMap 的值是指向前面定义好的 --><select id="selectUsers" parameterType="string" resultMap="resultListUser"> select * from user where userName like #{userName}</select><!-- User 联合文章进行查询 方法之一的配置 (多对一的方式) --><resultMap id="resultUserArticleList" type="Article"> <id property="id" column="aid" /> <result property="title" column="title" /> <result property="content" column="content" /> <association property="user" javaType="User"> <id property="id" column="id" /> <result property="userName" column="userName" /> <result property="userAddress" column="userAddress" /> </association> </resultMap><!-- User 联合文章进行查询 方法之二的配置 (多对一的方式) --><resultMap id="resultUserArticleList-2" type="Article"> <id property="id" column="aid" /> <result property="title" column="title" /> <result property="content" column="content" /> <association property="user" javaType="User" resultMap="resultListUser" /> </resultMap><select id="getUserArticles" parameterType="int" resultMap="resultUserArticleList"> select user.id,user.userName,user.userAddress,article.id aid,article.title,article.content from user,article where user.id=article.userid and user.id=#{id}</select><!--执行增加操作的SQL语句。id和parameterType 分别与IUserOperation接口中的addUser方法的名字和 参数类型一致。以#{name}的形式引用Student参数 的name属性,MyBatis将使用反射读取Student参数 的此属性。#{name}中name大小写敏感。引用其他 的gender等属性与此一致。seGeneratedKeys设置 为"true"表明要MyBatis获取由数据库自动生成的主 键;keyProperty="id"指定把获取到的主键值注入 到Student的id属性--> <insert id="addUser" parameterType="User" useGeneratedKeys="true" keyProperty="id"> insert into user(userName,userAge,userAddress) values(#{userName},#{userAge},#{userAddress}) </insert> <update id="updateUser" parameterType="User" > update user set userName=#{userName},userAge=#{userAge},userAddress=#{userAddress} where id=#{id} </update> <delete id="deleteUser" parameterType="int"> delete from user where id=#{id} </delete> </mapper></span>
3. sql语句对应的接口 ,由这个接口来控制sql语句的调用,更加面向对象
<span style="font-size:18px;">package com.yihaomen.mybatis.inter;import java.util.List;import com.yihaomen.mybatis.model.*;public interface IUserOperation { public User selectUserByID(int id);public List<User> selectUsers(String userName);public void addUser(User user);public void updateUser(User user);public void deleteUser(int id);public List<Article> getUserArticles(int id);}</span>
4. 实体类User
<span style="font-size:18px;">public class User {private int id;private String userName;private int userAge;private String userAddress;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public int getUserAge() {return userAge;}public void setUserAge(int userAge) {this.userAge = userAge;}public String getUserAddress() {return userAddress;}public void setUserAddress(String userAddress) {this.userAddress = userAddress;}}</span>
5. 测试代码(连接数据库,实现CRUD)
<span style="font-size:18px;">public class Test { private static SqlSessionFactory sqlSessionFactory; private static Reader reader; static{ try{ reader = Resources.getResourceAsReader("Configuration.xml"); sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); }catch(Exception e){ e.printStackTrace(); } } public static SqlSessionFactory getSession(){ return sqlSessionFactory; } public void getUserArticles(int userid){ SqlSession session = sqlSessionFactory.openSession(); try { IUserOperation userOperation=session.getMapper(IUserOperation.class); List<Article> articles = userOperation.getUserArticles(userid); for(Article article:articles){ System.out.println(article.getTitle()+":"+article.getContent()+ ":作者是:"+article.getUser().getUserName()+":地址:"+ article.getUser().getUserAddress()); } } finally { session.close(); } } public static void main(String[] args) { Test testUser=new Test(); testUser.getUserArticles(1);} }</span>
0 0
- Mybatis运作流程(手动方式创建sqlSessionFactory)
- Mybatis SqlSessionFactory创建过程
- mybatis创建SqlSessionFactory
- mybatis与spring集成中SqlSessionFactory创建流程
- MyBatis SqlSessionFactory的几种常见创建方式
- MyBatis核心SqlSessionFactory的创建
- MyBatis核心SqlSessionFactory的创建
- MyBatis核心SqlSessionFactory的创建
- [Mybatis] Mybatis运作流程分析
- mybatis学习(三)SqlSessionFactory
- MyBatis的SqlSessionFactory的创建问题
- SqlSessionFactory创建SqlSession测试mybatis的sql
- mybatis之 SqlSessionFactory单例创建
- 在MyBatis中 SqlSessionFactory的创建过程
- MyBatis 配置文件以及SqlSessionFactory对象的创建
- mybatis源码阅读之SqlSessionFactory创建
- Mybatis与Spring整合(Mybatis的sqlSessionFactory交由spring容器来创建)
- MyBatis SqlSessionFactory
- poj 1066
- __weak如何实现对象值自动设置为nil的
- 程序员也要不停学习不停总结
- Eclipse快捷键大全
- Windows sockets网络开发-基本UDP套接字编程
- Mybatis运作流程(手动方式创建sqlSessionFactory)
- Oracle中的Join(连接)的使用
- C++及OpenCV中调用Tesseract
- 如何少走弯路地开发智能硬件?听听“台湾制造”怎么说
- 卸载了PL/SQL Developer,说一下与Toad for Oracle的对比
- HttpCookie简单用法
- lua
- 通过redmine提供的api自动创建问题以方便与其他工具集成--------同事已验证过
- mac os x苹果系统LAMP环境配置(改动)