`

mybatis使用实例

阅读更多

 

mybatis使用说明

1.配置文件
2.PO 映射对象
3.Dao
4.对象关联:使用外连接查询
5.分页:sql分页 limit 10
6.mybatis 调用存储过程
7.sqlSession close异常?

public class TestDaoImpl implements ITestDao {
 private SqlSessionTemplate sqlSessionTemplate;

 @Override
 public List<TestPO> query(TestPO po) {
  List<TestPO> list = sqlSessionTemplate.selectList("testMapper.query", po);
  return list;
 }

 @Override
 public boolean add(TestPO po) {
  int i = sqlSessionTemplate.insert("testMapper.add", po);
  boolean suc = false;
  if(i==1){
   suc = true;
  }
  return suc;
 }

 @Override
 public boolean update(TestPO po) {
  int i = sqlSessionTemplate.update("testMapper.update", po);
  boolean suc = false;
  if(i==1){
   suc = true;
  }
  return suc;
 }

 @Override
 public boolean delete(String id) {
  int i = sqlSessionTemplate.delete("testMapper.delete", id);
  boolean suc = false;
  if(i==1){
   suc = true;
  }
  return suc;
 }

 @Override
 public void proc(Map<String, Object> map) {
  sqlSessionTemplate.select("testMapper.procedure", map, null);
 }

 public void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate) {
 
  this.sqlSessionTemplate = sqlSessionTemplate;
 }
}

<?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="testMapper">
 <!-- po对象属性映射 -->
 <resultMap id="testMap" type="cn.demo.model.po.TestPO" >
  <result property="userId" column="userId"/>
  <result property="userName" column="userName"/>
  <result property="birthday" column="birthday"/>
  <result property="salary" column="salary"/>
  <result property="ip" column="ip"/>
  <result property="id" column="id"/>
  <result property="content" column="content"/>
  <result property="image" column="image"/>
 </resultMap>
 
 <!-- sql 片段 -->
 <sql id="userFields">
  userId,userName,birthday,salary
 </sql>
 
 <!-- 多表连接查询 -->
 <select id="query" parameterType="java.util.Map" resultMap="testMap">
  select <include refid="userFields"/>,
  B.ip,B.id
  from user A,log B
  where A.userId = B.id
  <if test="userName != '' and userName != null">
   AND A.userName = #{userName}
  </if>
 </select>
 
 <insert id="add" parameterType="cn.demo.model.po.TestPO">
  insert into user(<include refid="userFields"/>)
  values(#{userId, jdbcType=VARCHAR},
  #{userName, jdbcType=VARCHAR},
  #{birthday, jdbcType=DATE},
  #{salary, jdbcType=NUMERIC}
  )
 </insert>
 
 <update id="update" parameterType="cn.demo.model.po.TestPO">
  update user set userName=#{userName},
  birthday = now()
  where userId = #{userId}
 </update>
 
 <!-- CDATA括号内的内容不会被解析,当成文本看待 -->
 <delete id="delete" parameterType="string">
  <![CDATA[ delete from user where userId = #{userId} ]]>
 </delete>

 <!-- mybatis调用存储过程: statementType-CALLABLE -->
 <select id="procedure" statementType="CALLABLE">
  {call p_sum_salary(#{dte, jdbcType=DATE, mode=IN}, #{amt, jdbcType=NUMERIC, mode=OUT})}
 </select>
</mapper>

public class TestPO implements Serializable{
 private String userId;
 private String userName;
 private Date birthday;
 private double salary;

 private String ip;
 private int id;
 //clob
 private String content;
 //blob
 private byte[] image;

 public String getUserId() {
  return userId;
 }

 public void setUserId(String userId) {
  this.userId = userId;
 }

 public String getUserName() {
  return userName;
 }

 public void setUserName(String userName) {
  this.userName = userName;
 }

 public Date getBirthday() {
  return birthday;
 }

 public void setBirthday(Date birthday) {
  this.birthday = birthday;
 }

 public double getSalary() {
  return salary;
 }

 public void setSalary(double salary) {
  this.salary = salary;
 }

 public String getIp() {
  return ip;
 }
 public void setIp(String ip) {
  this.ip = ip;
 }
 public int getId() {
  return id;
 }

 public void setId(int id) {
  this.id = id;
 }
 
 public String getContent() {
  return content;
 }
 
 public void setContent(String content) {
  this.content = content;
 }

 public byte[] getImage() {
  return image;
 }

 public void setImage(byte[] image) {
  this.image = image;
 }
}

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:spring/*.xml"})
public class DaoTest {
 
 @Autowired
 private ITestDao dao;
 private static Logger log = LoggerFactory.getLogger(DaoTest.class);
 
 @org.junit.Test
 public void query(){
  TestPO po = new TestPO();
  po.setUserName("feifei2");
  List<TestPO> list = dao.query(po);
  log.info("query() list length: "+list.size());
 }
 @org.junit.Test
 public void add(){
  TestPO po = new TestPO();
  po.setUserId("4003");
  po.setUserName("feifei2");
  po.setBirthday(new Date());
  po.setImage("abcd123".getBytes());
  po.setSalary(50);
  boolean f = dao.add(po);
  log.info("add() : "+f);
 }
 @org.junit.Test
 public void update(){
  TestPO po = new TestPO();
  po.setUserId("4000");
  po.setUserName("feifei");
  po.setBirthday(new Date());
  po.setSalary(550);
  boolean f = dao.update(po);
  log.info("update() : "+f);
 }
 @org.junit.Test
 public void delete(){
  String id ="4000";
  boolean f =dao.delete(id);
  log.info("delete() :"+f);
 }
 //调用存储过程
 @org.junit.Test
 public void proc(){
  Map<String,Object> map = new HashMap<String,Object>();
  map.put("dte", new Date());//入参:IN
  dao.proc(map);
  BigDecimal amt = (BigDecimal)map.get("amt"); //出参:OUT
  log.info("proc() amt = "+amt);
 }
}

 delimiter //
 create  procedure p_sum_salary(IN dte Date,OUT amt int)
 begin
 select 100 into amt;
 end
 //

 

分享到:
评论

相关推荐

    基于注解的MyBatis使用实例

    MyBatis 是一款优秀的持久层框架,可以很方便的在java中实现对数据库的操作。 MyBatis 可以将sql语句映射为java接口函数,直接对实体进行操作。 MyBatis 的映射类(Mapper)在映射sql语句时有两种方式,一种是xml...

    mybatis demo mybatis 实例

    通过这个实例项目,开发者可以从实践中学习MyBatis的使用,掌握如何配置MyBatis,如何编写Mapper接口和XML映射文件,以及如何在Java代码中调用Mapper接口进行数据操作。同时,结合Maven的使用,可以理解项目构建和...

    mybatis实例

    总的来说,这个MyBatis实例提供了一个简单的框架,展示了如何配置MyBatis,编写XML映射文件,以及在Java代码中与数据库进行交互。对于初学者来说,这是一个很好的起点,帮助理解MyBatis的基本工作原理和操作流程。...

    MyBatis经典入门实例

    通过学习这个实例,你可以掌握如何在实际项目中使用MyBatis进行数据操作。 首先,我们需要了解MyBatis的核心概念。MyBatis的核心是SQL映射文件,它将SQL语句与Java代码分离,使得SQL的编写和维护变得更加灵活。在...

    mybatis编程实例,手把手教你学会初步的mybatis编程

    mybatis编程实例,手把手教你学会初步的mybatis编程,里面有详细的开发步骤,有作者的联系方式,有问题的话可以随时联系,有很好的设计模式,和良好的编程习惯,相信读者阅读了会有很大的收获,绝不坑爹!...

    MyBatis例子

    总结来说,这个"MyBatis例子"涵盖了MyBatis的基本使用,包括配置文件的编写、接口的定义、Mapper XML文件的创建、Struts2框架下的集成以及事务和日志管理。通过这个例子,开发者可以深入理解MyBatis的工作原理,并...

    mybatis入门实例

    综上所述,"mybatis入门实例" 包含了 MyBatis 的核心概念和基本使用方法,通过对单表的 CRUD 操作,帮助初学者快速理解和掌握 MyBatis 的工作原理和实践技巧。在这个实例中,你可以看到从配置到实际操作的全过程,...

    mybatis3.0.2入门实例

    在本入门实例中,我们将探讨如何使用MyBatis 3.0.2版本进行基本的数据库操作。这个实例适合初学者,将帮助你快速理解和掌握MyBatis的基本用法。 1. **MyBatis安装与配置** 在开始之前,确保你已经安装了JDK和Maven...

    MyBatis入门实例源码

    这个入门实例源码应该涵盖了MyBatis的基本使用,包括配置、SQL编写、结果映射、事务处理等方面,通过学习和实践这个实例,开发者可以快速掌握MyBatis的基本操作和核心思想。在实际项目中,MyBatis还能与其他框架如...

    mybatis例子

    【描述】"springmvc+mybatis小例子,数据库使用的是mysql数据库" 暗示了这个项目主要包含以下几个关键部分: 1. **SpringMVC**:SpringMVC是Spring框架的一个模块,专门用于构建Web应用的模型-视图-控制器(MVC)...

    mybatis例子java版

    MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 在这个"Mybatis例子java版"中,我们可以深入学习MyBatis在Java环境下的...

    spring+netty+mybatis整合实例

    在IT行业中,Spring、Netty和MyBatis是三个非常重要的框架,它们分别在不同的领域发挥着关键作用。Spring是一个全面的Java应用框架,提供强大的依赖注入、AOP(面向切面编程)以及丰富的功能模块;Netty则是一个高...

    mybatis简单例子

    接着,创建SqlSessionFactory,它是MyBatis的主要入口点,用于创建SqlSession实例,后者是与数据库进行交互的接口。SqlSessionFactory可以通过SqlSessionFactoryBuilder从配置文件或者代码中创建。 配置文件(通常...

    Spring集成MyBatis完整实例(分享)

    在本文中,我们将探讨如何集成Spring框架与MyBatis,以构建一个完整的实例。这个实例是一个图书管理系统的简单实现,涉及的技术栈包括Spring、MyBatis、Maven和MySQL。以下是详细步骤: **一、创建Maven Web项目** ...

    SpringMVC+Mybatis简单例子

    这些配置文件会定义Bean的实例化、数据源、事务管理器以及Mybatis的SqlSessionFactory和Mapper扫描路径。 2. **实体类**:项目将包含数据库表对应的Java实体类,例如`User.java`,用于封装数据库中的记录。 3. **...

    mybatis generator使用例子

    下面将详细介绍如何使用MyBatis Generator以及相关知识点。 **一、MyBatis Generator介绍** MyBatis Generator是MyBatis框架的一个插件,它可以根据数据库表信息自动创建Mapper接口、Mapper XML文件、实体类和DAO...

    MyBatis简单入门实例

    它可能会引导读者通过一个简单的例子,如创建用户表,实现增删查改(CRUD)操作,来理解MyBatis的工作原理。 【标签】"源码"表明这个教程可能涉及到阅读和理解MyBatis的示例代码,这对于深入学习和调试是很有帮助的...

    Mybatis 入门小例子

    下面,我们将通过这个“Mybatis 入门小例子”来深入理解Mybatis的核心概念和基本使用。 1. **环境搭建** 在开始Mybatis的学习之前,确保你已经安装了JDK、Maven(或Gradle)以及MySQL等数据库。Mybatis依赖于这些...

    mybatis入门实例(mysql数据库,带建表语句)

    总的来说,这个入门实例提供了一个基础的MyBatis使用模型,帮助初学者快速理解MyBatis如何与数据库交互。通过实践这个例子,你可以了解到MyBatis的配置、映射文件的编写、接口方法的定义以及如何在Java代码中调用...

Global site tag (gtag.js) - Google Analytics