2019独角兽企业重金招聘Python工程师标准>>>

一、表(这里用mysql,数据库名为yiibai)

CREATE TABLE `user` (`id` int(10) UNSIGNED NOT NULL,`name` varchar(64) NOT NULL DEFAULT '',`dept` varchar(254) NOT NULL DEFAULT '',`website` varchar(254) DEFAULT '',`phone` varchar(16) NOT NULL DEFAULT '',`birthday` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;--
-- Indexes for table `user`
--
ALTER TABLE `user`ADD PRIMARY KEY (`id`);

二、表相应的实体类User.java(pojo)以及mybatis表map配置文件User.xml

package com.yiibai.mybatis.models;import java.util.Date;public class User {public User(int id, String name, String dept, String phone, String website, Date birthday) {super();this.id = id;this.name = name;this.dept = dept;this.phone = phone;this.website = website;this.birthday = birthday;}public User() {super();// TODO 自动生成的构造函数存根}private int id;private String name;private String dept;private String phone;private String website;private Date birthday;public String getWebsite() {return website;}public void setWebsite(String website) {this.website = website;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getDept() {return dept;}public void setDept(String dept) {this.dept = dept;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}@Overridepublic String toString() {return "User [id=" + id + ", name=" + name + ", dept=" + dept + ", phone=" + phone + ", website=" + website+ ", birthday=" + birthday + "]";}}

配置文件User.xml和User类一样放在包com.yiibai.mybatis.models下,这里只是为了解释和注解方法混用就配置了 GetUserByID一个方法,实际应用可能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="com.yiibai.mybatis.models.UserMapper"><select id="GetUserByID" parameterType="int" resultType="User">select * from `user` where id = #{id}</select>
</mapper>

三、Dao接口

package com.yiibai.mybatis.dao;import java.util.List;import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;import com.yiibai.mybatis.models.User;public interface IUser {@Select("select * from user where id= #{id}")public User getUserByID(int id);@Insert("insert into user(id, name, dept,phone,website,birthday) values(#{id}, #{name}, #{dept},#{phone}, #{website}, #{birthday})")public int insertUser(User user);@Delete("delete from user where id=#{id}")public int deleteUserById(int id);@Update("update user set name=#{name},dept=#{dept},phone=#{phone},website=#{website},birthday=#{birthday} where id=#{id}")public int updateUser(User user);@Select("select * from user")public List<User> getAllUser();public User oneByID(int id);}

这里唯一没有用注解的方法oneByID用XML方式来实现

四、Dao实现类UserDaoImpl继承SqlSessionDaoSupport并实现了刚才的IUser接口

package com.yiibai.mybatis.daoimpl;import java.util.List;import org.mybatis.spring.support.SqlSessionDaoSupport;import com.yiibai.mybatis.dao.IUser;
import com.yiibai.mybatis.models.User;public class UserDaoImpl extends SqlSessionDaoSupport implements IUser {@Overridepublic User getUserByID(int id) {// TODO 自动生成的方法存根return    this.getSqlSession().getMapper(IUser.class).getUserByID(id);}@Overridepublic int insertUser(User user) {// TODO 自动生成的方法存根return this.getSqlSession().getMapper(IUser.class).insertUser(user);}@Overridepublic int deleteUserById(int id) {// TODO 自动生成的方法存根return this.getSqlSession().getMapper(IUser.class).deleteUserById(id);}@Overridepublic int updateUser(User user) {// TODO 自动生成的方法存根return this.getSqlSession().getMapper(IUser.class).updateUser(user);}@Overridepublic List<User> getAllUser() {// TODO 自动生成的方法存根return this.getSqlSession().getMapper(IUser.class).getAllUser();}@Overridepublic User oneByID(int id) {// TODO 自动生成的方法存根return this.getSqlSession().selectOne("com.yiibai.mybatis.models.UserMapper.GetUserByID", id);}}

这里可以看出oneByID方法是通过调用User.xml名字空间com.yiibai.mybatis.models.UserMapper下面GetUserByID的方法来完成的。

五、配置文件

mybatis配置文件cfg.xml和spring bean的配置文件Userbean.xml都放在com.yiibai.mybatis下:

<?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 alias="User" type="com.yiibai.mybatis.models.User" /></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://127.0.0.1:3306/yiibai?useSSL=false" /><property name="username" value="y-user" /><property name="password" value="y-passwd" /></dataSource></environment></environments><mappers><!-- XML的方式 注册映射配置文件--><mapper resource="com/yiibai/mybatis/models/User.xml" /> <!--接口的方式  注册接口--><mapper class="com.yiibai.mybatis.dao.IUser"/></mappers></configuration>

可以看出mapper中把XML和接口方式都加载了。

也可以在主类中调用this.sqlSessionFactory.getConfiguration().addMapper(IUser.class)来注册

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsdhttp://www.springframework.org/schema/jeehttp://www.springframework.org/schema/jee/spring-jee.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/utilhttp://www.springframework.org/schema/util/spring-util.xsdhttp://www.springframework.org/schema/toolhttp://www.springframework.org/schema/tool/spring-tool.xsd"><bean id="dataSource1" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">        <property name="driverClassName" value="com.mysql.jdbc.Driver" />       <property name="url" value="jdbc:mysql://localhost:3306/yiibai?useSSL=false" />       <property name="username" value="your-name" />       <property name="password" value="your-passwd" />       </bean><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource1" /><property name="configLocation"value="classpath:com/yiibai/mybatis/cfg.xml" /></bean><bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"><constructor-arg ref="sqlSessionFactory" /></bean><bean id="MybatisUserDao" class="com.yiibai.mybatis.daoimpl.UserDaoImpl"><property name="sqlSessionTemplate" ref="sqlSession" /></bean></beans>

六、主类

package com.yiibai.mybatis;import java.sql.Date;
import java.util.List;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import com.yiibai.mybatis.dao.IUser;
import com.yiibai.mybatis.models.User;public class UserBeanTest {private static ApplicationContext ctx;public static void main(String[] args) throws Exception {ctx = new ClassPathXmlApplicationContext("com/yiibai/mybatis/Userbean.xml");IUser iuser = (IUser) ctx.getBean("MybatisUserDao");User user = new User(2, "yiibai2", "Tech", "13800009900", "http://www.zjptcc.com", Date.valueOf("1977-08-09"));iuser.insertUser(user);System.out.println(iuser.getUserByID(2));System.out.println(iuser.oneByID(2));List<User> users = iuser.getAllUser();for (User u : users) {System.out.println("user ID " + u.getId());System.out.println("名字: " + u.getName());System.out.println("所属部门" + u.getDept());System.out.println("电话" + u.getPhone());System.out.println("网址" + u.getWebsite());System.out.println("日期" + u.getBirthday());System.out.println("----------------------------");}iuser.deleteUserById(2);}}

七、sping bean不是必须配置的(不配置Userbean.xml),可以在主类中声明一个SqlSessionFactory变量,这时主类可以是这样子:

package com.yiibai.mybatis;import java.io.Reader;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.List;import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;import com.yiibai.mybatis.dao.IUser;
import com.yiibai.mybatis.models.*;/*** * @author yiibai* @copyright http://www.yiibai.com* @date 2015/09/22*/
public class TestUser {private static SqlSessionFactory sqlSessionFactory;private static Reader reader;static {try {reader = Resources.getResourceAsReader("com/yiibai/mybatis/cfg.xml");sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);} catch (Exception e) {e.printStackTrace();}}public static SqlSessionFactory getSession() {return sqlSessionFactory;}/*** @param args* @throws ParseException */public static void main(String[] args) throws ParseException {// TODO Auto-generated method stubSqlSession session = sqlSessionFactory.openSession();try {User user = (User) session.selectOne("com.yiibai.mybatis.models.UserMapper.GetUserByID", 1);System.out.println(user);IUser userInterface = session.getMapper(IUser.class);user = (User) userInterface.getUserByID(1);System.out.println(user);userInterface.insertUser(new User(2,"依依2","Tech","13800009922","http://www.zjptcc.com", new SimpleDateFormat("yyyy-MM-dd").parse("1973-11-05"))) ;List<User> users = userInterface.getAllUser();for (User u : users) {System.out.println("user ID " + u.getId());System.out.println("名字: " + u.getName());System.out.println("所属部门" + u.getDept());System.out.println("电话" + u.getPhone());System.out.println("网址" + u.getWebsite());System.out.println("日期" + u.getBirthday());System.out.println("----------------------------");}userInterface.deleteUserById(2);session.commit();} finally {session.close();}}}

Spring 的持久化实例

springboot和mybatis结合

转载于:https://my.oschina.net/u/2245781/blog/1554379

Spring Mybatis实例SqlSessionDaoSupport混用xml配置和注解相关推荐

  1. MongoDB和Java(4):Spring Data整合MongoDB(XML配置)

    最近花了一些时间学习了下MongoDB数据库,感觉还是比较全面系统的,涉及了软件安装.客户端操作.安全认证.副本集和分布式集群搭建,以及使用Spring Data连接MongoDB进行数据操作,收获很 ...

  2. spring IOC基本配置(xml配置和注解配置)

    目录 Spring IOC IOC是什么 IOC可以做什么 依赖注入 IOC和DI IOC容器 Bean 配置IOC容器 spring ioc 依赖 XML配置 实例化容器 使用容器 xml配置详解 ...

  3. Spring MVC 5 + Thymeleaf 基于Java配置和注解配置

    Spring MVC 5 + Thymeleaf 注解配置 Spring的配置方式一般为两种:XML配置和注解配置 Spring从3.0开始以后,推荐使用注解配置,这两种配置的优缺点说的人很多,我就不 ...

  4. mybatis 配置 mysql连接池_spring 5.x 系列第5篇 —— 整合 mybatis + druid 连接池 (xml配置方式)...

    项目目录结构 1. 导入依赖 创建 maven 工程,除了 Spring 的基本依赖外,还需要导入 Mybatis 和 Druid 的相关依赖: org.springframeworkgroupId& ...

  5. spring声明式事务管理方式( 基于tx和aop名字空间的xml配置+@Transactional注解)

    1. 声明式事务管理分类 声明式事务管理也有两种常用的方式, 一种是基于tx和aop名字空间的xml配置文件,另一种就是基于@Transactional注解. 显然基于注解的方式更简单易用,更清爽. ...

  6. Mybatis mapper代理SqlMapConfig.xml配置详解

    SqlMapConfig.xml是mybatis的全局配置文件: 1.mapper映射配置 >配置mapper的另外一种方式: <mappers> <mapper resour ...

  7. 如何把Spring Boot 项目变成一个XML配置的Spring项目

    现在大家都追赶新的技术潮流,我来逆行一下. 其实Spring Boot 隐藏了大量的细节,有大量的默认配置,其实通过xml配置的方式也可以达到和Spring Boot一样的效果. Profile 在S ...

  8. @bean注解和@component注解的区别_阿里面试题一:spring里面使用xml配置和注解配置区别...

    阿里是众多程序员梦寐以求的地方,今天我们分享阿里的一个真实面试题,看似简单,回答起来确实没有头绪?下面我们分几点给大家说下答案. 适用场景 Xml配置场景: 1.Bean实现类来源于第三方类库,如Da ...

  9. Spring AOP XML配置及注解配置

    一.XML配置切面类 1.日志切面类 //切面类注解配置加两个注解 @Aspect @Component public class LoggerAspect {public Object log(Pr ...

最新文章

  1. Windows下安装 openpyxl
  2. 安装Docker的三种方式
  3. 万维网发布服务 w3svc 已停止 除非万维_万维网和互联网的区别
  4. TensorFlow学习记录1-一些比较好的学习资源
  5. 手机网页宽度自动适应屏幕宽度的方…
  6. OpenStack手动制作CentOS 7 KVM镜像
  7. JAVA微信小程序商城源码:带完整后台运行版
  8. 国内地图服务对比分析
  9. 邱跃鹏:互联网下半场,腾讯云要做信息能源发动机
  10. 易优家:重新定义食品包装安全
  11. 高德地图之逆地理编码
  12. Turtle 画正方形螺旋线
  13. Unable to create/open lock file: /var/lib/mongodb/mongod.lock errno:13 Permission denied Is a mong..
  14. 求解两点间最短路径的算法
  15. 语音芯片WT2003H4 B008单芯片实现智能门铃方案快捷设计
  16. 自动摘要生成 tf-idf+doc2vec+句子聚类
  17. Unity使用Isometric Z As Y Tilemap创建2.5D地图(一)如何创建Tilemap
  18. Bosun中创建报警规则
  19. 什么是steam账号红信,如何避免steam账号红信,如何提升选品和消耗速度
  20. c语言编译小学生计算题,小学生基本运算习题-给小学生编写练习20以内加减法计算的c程序.要求:#61548 爱问知识人...

热门文章

  1. 脑机交互可提高行动能力
  2. 刑啊!智能音箱让10岁女童摸电门,内容来自网络却不审核,这锅该谁来背?...
  3. 没想到吧,让你一秒变身纸片人的爆火AI特效,背后还有这么多知识点
  4. 比用Pytorch框架快200倍!0.76秒后,笔记本上的CNN就搞定了MNIST | 开源
  5. MindCon | 5天啦,你有领取MSG城市专属徽章吗?
  6. 北大率先官宣朱松纯加盟,现身燕园,任职AI研究院院长,“AI发展离不开哲学思考”...
  7. BERT小学生级上手教程,从原理到上手全有图示,还能直接在线运行
  8. AI转型业绩哪家强?联想一季度营收853亿,净利11亿
  9. 如何解决多地开视频会议直播问题?
  10. Django重新整理