mybatis03(配置文件实现一对一动态sql 的增删改查)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ITw333/article/details/79013999

1.javaBean


 

package com.bean;

public class User {

 private Integer id;
 private String username;
 private String password;
 private Integer phone;
 public Integer getId() {
  return id;
 }
 public void setId(Integer id) {
  this.id = id;
 }
 public String getUsername() {
  return username;
 }
 public void setUsername(String username) {
  this.username = username;
 }
 public String getPassword() {
  return password;
 }
 public void setPassword(String password) {
  this.password = password;
 }
 public Integer getPhone() {
  return phone;
 }
 public void setPhone(Integer phone) {
  this.phone = phone;
 }
 
}

2.log4j.properties

# Global logging configuration
log4j.rootLogger=ERROR, stdout
# MyBatis logging configuration...
log4j.logger.com.mapper=DEBUG
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

3.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">
    <!--1.配置环境 ,默认的环境id为mysql-->
 <configuration>
 
  <!-- 1.指定mybatis所用日志的具体实现 -->
  <settings>
   <setting name="logImpl" value="LOG4j"/>
  </settings>
  <!-- 起别名  -->
  <typeAliases>
   <typeAlias type="com.bean.User" alias="User"/>
   <!-- 自动在包名下搜索javabean并起别名为 类名的首字母小写 -->
   <!--  <package name="com.bean"/> -->
  </typeAliases>
  <!--2.配置环境 ,默认的环境id为mysql-->
  <environments default="mysql">
   <!--2.2.配置id为mysql的数据库环境 -->
   <environment id="mysql">
    <!-- 2.2.1使用JDBC的事务管理   使用了JDBC的提交和回滚设置-->
    <transactionManager type="JDBC"></transactionManager>
    <!--2.2.2数据库连接池   POOLED是JDBC连接对象的数据源连接池的实现 -->
    <dataSource type="POOLED">
     <property name="driver" value="com.mysql.jdbc.Driver"/>
     <property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis"/>
     <property name="username" value="root"/>
     <property name="password" value="123456"/>
    </dataSource>
   </environment>
  </environments>
  
  <!--3.配置Mapper的位置 -->
  <mappers>
   <mapper resource="com/mapper/UserMapper.xml"/>
   <!-- 使用本地文件 -->
   <!-- <mapper url="file:///D:/java/workspaces/mybatis0/src/com/mapper/UserMapper.xml"/> -->
  </mappers>
 </configuration>

4..数据库操作的配置文件

<?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表示命名空间
 程序代码访问文件是通过namespace完成的,包名+文件名命名
-->
<mapper namespace="com.mapper.UserMapper">
 <insert id="addUser" parameterType="User">
  insert into user(username, password, phone) values
  (#{username}, #{password}, #{phone})
 </insert>
 <delete id="deleteUser" parameterType="Integer">
  delete from user where id=#{id}
 </delete>
 
 <!-- set标签等价于set + 最后一个设置语句的逗号去掉 -->
 <!-- where标签等价于 where + 第一个and去掉 -->
 <update id="updateUser" parameterType="com.bean.User">
  update user
  <set>
   <if test="username!=null and username !=''">
    username=#{username},
   </if>
   <if test="password!=null and password !=''">
    password=#{password},
   </if>
  </set>
  <where>
   <if test="id != null and id !=''">
    and id=#{id}
   </if>
  </where>
 </update>
 
 <!-- chose标签类似于switch-case语句 只会执行第一个满足条件的语句 -->
 <!-- when等价于case语句     otherwise等价于default语句-->
 <select id="selectUserByUser" parameterType="com.bean.User" resultType="com.bean.User">
  select * from user
  <where>
   <choose>
    <when test="username!=null and username !=''">
     username=#{username}
    </when>
    <when test="password!=null and password!=''">
     password=#{password}
    </when>
    <when test="id!=null and id!=''">
     id=#{id}
    </when>
    <when test="phone!=null and phone!=''">
     phone=#{phone}
    </when>
    <otherwise>
     1=1
    </otherwise>
   </choose>
  </where>
 </select>
 <!-- 通过使用resultmap进行数据库表和返回值类型的映射,id属性代表主键,result属性代表普通列 -->
 <resultMap type="com.bean.User" id="userResultMap">
  <id property="id" column="id"/>
  <result property="username" column="username"/>
  <result property="password" column="password"/>
  <result property="phone" column="phone"/>
 </resultMap>
 <select id="selectUser2" resultMap="userResultMap">
  select * from user
 </select>
 
 <!-- 使用if语句判断是否为空 -->
 <select id="selectUser" parameterType="com.bean.User" resultType="com.bean.User">
  select * from user where 1=1
  <if test="id != null and id !=''">
   and id=#{id}
  </if>
 </select>
 
 <select id="selectUserByName" parameterType="String" resultType="com.bean.User">
  select * from user where username like '%${value}%'<!-- 这种方式必须是${value} -->
  <!-- select * from user where username like "%"#{username}"%" -->
  <!-- select * from user where username like concat("%",#{username},"%") -->
 </select>
 
 <select id="selectUserForeach" resultType="com.bean.User" parameterType="List">
  select * from user where id in
  <foreach collection="list" item="item" index="index" open="(" separator="," close=")">
   #{item}
  </foreach>
 </select>
</mapper>

5.增

 

package com.test;

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;
import org.apache.tools.ant.types.CommandlineJava.SysProperties;
import org.junit.Test;

import com.bean.User;

public class Test1 {

 @Test
 public void add() throws IOException {
  
  //第一步 读取配置文件mybatis-config.xml
  InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
  //第二步 创建会话工厂
  SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 
  //第三步 生成会话
  SqlSession session = sessionFactory.openSession();
  
  User user=new User();
  user.setUsername("哈哈哈");
  user.setPassword("123456");
  user.setPhone(110);
  
  //第一个参数要定位到执行的 SQL语句,通过namesapce+sql的id
  int i=session.insert("com.mapper.UserMapper.addUser",user);
  
  if(i>0)
   System.out.println("插入成功");
  else
   System.out.println("插入失败");
  session.commit();
  
  session.close();
 }
}

6.删

 

package com.test;

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;
import org.junit.Test;

public class Test2 {

 @Test
 public void delete() throws IOException
 {
  InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
  SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
  SqlSession session = sessionFactory.openSession();
  
  int i=session.delete("com.mapper.UserMapper.deleteUser", 2);
  
  if(i>0)
   System.out.println("删除成功");
  else
   System.out.println("删除失败");
  session.commit();
  session.close();
 }
}

7.改

package com.test;

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;
import org.junit.Test;

import com.bean.User;

import javassist.expr.NewArray;

public class Test3 {

 @Test
 public void update() throws IOException
 {
  InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
  SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
  SqlSession session = sessionFactory.openSession();
  
  User user=new User();
  user.setId(2);
  user.setPassword("123456");
  int i=session.update("com.mapper.UserMapper.updateUser", user);
  
  if(i>0)
   System.out.println("修改成功");
  else
   System.out.println("修改失败");
  session.commit();
  session.close();
 }
 
}

8.查


 

package com.test;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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 org.junit.Test;

import com.bean.User;
import com.mysql.fabric.xmlrpc.base.Value;

import javassist.expr.NewArray;

public class Test4 {

 @Test
 public void select() throws IOException
 {
  InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
  SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 
  SqlSession session = sessionFactory.openSession();
  
  User user2=new User();
  user2.setId(2);
  User user=session.selectOne("com.mapper.UserMapper.selectUser",user2);
  System.out.println(user.getId());
  System.out.println(user.getUsername());
  System.out.println(user.getPassword());
  System.out.println(user.getPhone());
 }
 @Test
 public void select2() throws IOException
 {
  InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
  SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 
  SqlSession session = sessionFactory.openSession();
  
  User user=session.selectOne("com.mapper.UserMapper.selectUser2");
  System.out.println(user.getId());
  System.out.println(user.getUsername());
  System.out.println(user.getPassword());
  System.out.println(user.getPhone());
 }
 @Test
 public void selectUserByName() throws IOException
 {
  InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
  SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 
  SqlSession session = sessionFactory.openSession();
  
  List<User> users=session.selectList("com.mapper.UserMapper.selectUserByName","玉");
  for(User user:users)
  {
   System.out.print(user.getId()+"\t");
   System.out.print(user.getUsername()+"\t");
   System.out.print(user.getPassword()+"\t");
   System.out.println(user.getPhone());
  }
 }
 @Test
 public void selectUserByUser() throws IOException
 {
  InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
  SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 
  SqlSession session = sessionFactory.openSession();
  
  List<User> users=session.selectList("com.mapper.UserMapper.selectUserByUser",new User());
  for(User user:users)
  {
   System.out.print(user.getId()+"\t");
   System.out.print(user.getUsername()+"\t");
   System.out.print(user.getPassword()+"\t");
   System.out.println(user.getPhone());
  }
 }
 @Test
 public void selectUserForeach() throws IOException
 {
  InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
  SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 
  SqlSession session = sessionFactory.openSession();
  
  List<Integer> list1=new ArrayList();
  list1.add(1);
  list1.add(2);
  list1.add(3);
  List<User> users=session.selectList("com.mapper.UserMapper.selectUserForeach",list1);
  for(User user:users)
  {
   System.out.print(user.getId()+"\t");
   System.out.print(user.getUsername()+"\t");
   System.out.print(user.getPassword()+"\t");
   System.out.println(user.getPhone());
  }
 }
}

猜你喜欢

转载自blog.csdn.net/ITw333/article/details/79013999