当前位置:   article > 正文

mybatis 简单CRUD_crud图怎么画

crud图怎么画



上图: 对象-关系图


随便画的,字段和表的对应关系!

User_ACCOUNT sql 脚本   我用的是mysql ,用别的稍微改一下就好了!

  1. DROP DATABASE IF EXISTS mybatis;
  2. CREATE DATABASE mybatis;
  3. USE mybatis;
  4. #
  5. # Table structure for table 'user'
  6. #
  7. CREATE TABLE USER_ACCOUNT (
  8. USER_ID INT(3) NOT NULL AUTO_INCREMENT,
  9. USER_NAME VARCHAR(10) NOT NULL,
  10. USER_PASSWORD VARCHAR(30) NOT NULL,
  11. USER_GROUP_NAME VARCHAR(10),
  12. PRIMARY KEY (USER_ID)
  13. );
  14. #
  15. # Data for table 'user'
  16. #
  17. INSERT INTO USER_ACCOUNT (USER_NAME, USER_PASSWORD, USER_GROUP_NAME)
  18. VALUES ('LMEADORS', 'PICKLE', 'EMPLOYEE');
  19. INSERT INTO USER_ACCOUNT (USER_NAME, USER_PASSWORD, USER_GROUP_NAME)
  20. VALUES ('JDOE', 'TEST', 'MANAGER');
  21. INSERT INTO USER_ACCOUNT (USER_NAME, USER_PASSWORD, USER_GROUP_NAME)
  22. VALUES ('JACK', 'SER', 'EMPLOYEE');
  23. INSERT INTO USER_ACCOUNT (USER_NAME, USER_PASSWORD, USER_GROUP_NAME)
  24. VALUES ('KETTY', 'TSS', 'BOSS');
  25. INSERT INTO USER_ACCOUNT (USER_NAME, USER_PASSWORD, USER_GROUP_NAME)
  26. VALUES ('ROSE', 'PICK', 'MANAGER');
  27. INSERT INTO USER_ACCOUNT (USER_NAME, USER_PASSWORD, USER_GROUP_NAME)
  28. VALUES ('JOHN', 'RUQI', 'EMPLOYEE');
  29. COMMIT;
  30. #
  31. # 显示表结构
  32. #
  33. DESC USER_ACCOUNT;
  34. #
  35. # 显示插入的字段 前5
  36. #
  37. SELECT * FROM USER_ACCOUNT LIMIT 0 , 5;
  38. #
  39. # completed!
  40. #


现在需要下载 mybatis的包 ,这里用的3.1.0

mybatis包下载地址


项目结构如下:



首先 根据对象-关系图 创建对象 User .java 

  1. package mybatis.domain;
  2. import java.io.Serializable;
  3. public class User implements Serializable{
  4. private static final long serialVersionUID = 202125533615707097L;
  5. private int id;
  6. private String name;
  7. private String password;
  8. private String groupName;
  9. //省了 setter 和 getter 方法
  10. }


UserMapper.java  这是一个接口 ,定义了对User对象的一些CRUD操作! 接口的方法可以根据java5的注释方式,被解析成UserMapper的实现实例,或者利用配置文件

  1. public interface UserMapper {
  2. void saveUser(User user);
  3. User getUserById(int id);
  4. List<User> getAllUser();
  5. void deleteUser(int id);
  6. void updateUser(User user);
  7. }

UserMapper.xml

这个配置文件和UserMapper 中的方法是一一对应的 


  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  4. <mapper namespace="mybatis.domain.UserMapper" >
  1. <!-- 这里使用了resultMap 这个是mybatis对关联映射的支持,如果字段名字和表中的名字不一样,需要转换一下-->
  2. <resultMap type="mybatis.domain.User" id="userResult" >
  3. <id column="USER_ID" property="id"/>
  4. <result column="USER_NAME" property="name" />
  5. <result column="USER_PASSWORD" property="password" />
  6. <result column="USER_GROUP_NAME" property="groupName" />
  7. </resultMap>
	<!--这里对应接口中的saveUser方法, parameterType 是输入的参数类型,#{}取给定参数的值,statementType prepared 代表使用preparedStatement
		执行语句,防止sql被恶意注入!
  1. -->
  2. <insert id="saveUser" parameterType="User" statementType="PREPARED">
  3. INSERT INTO USER_ACCOUNT (USER_NAME, USER_PASSWORD, USER_GROUP_NAME)
  4. VALUES (#{name},#{password},#{groupName})
  5. </insert>
  6. <select id="getUserById" parameterType="java.lang.Integer" resultMap="userResult" >
  7. SELECT
  8. USER_ID, USER_NAME, USER_PASSWORD, USER_GROUP_NAME
  9. FROM
  10. USER_ACCOUNT
  11. WHERE
  12. USER_ID = #{id}
  13. </select>
  14. <select id="getAllUser" resultMap="userResult">
  15. SELECT
  16. USER_ID, USER_NAME, USER_PASSWORD, USER_GROUP_NAME
  17. FROM
  18. USER_ACCOUNT
  19. </select>
  20. <delete id="deleteUser" parameterType="java.lang.Integer">
  21. DELETE FROM
  22. USER_ACCOUNT
  23. WHERE
  24. USER_ID = #{id}
  25. </delete>
  26. <update id="updateUser" parameterType="User">
  27. UPDATE
  28. USER_ACCOUNT
  29. SET
  30. USER_NAME = #{name}, USER_PASSWORD = #{password}, USER_GROUP_NAME = #{groupName}
  31. WHERE
  32. USER_ID = #{id}
  33. </update>
  34. </mapper>


Configuration.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE configuration PUBLIC
  3. "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6. <properties resource="config.properties" />
  7. <typeAliases>
  8. <typeAlias type="mybatis.domain.User" alias="User" />
  9. </typeAliases>
  10. <!-- 未指定的时候 default 为初始化的那个环境配置 -->
  11. <environments default="deveploement">
  12. <environment id="deveploement">
  13. <transactionManager type="JDBC" />
  14. <dataSource type="POOLED">
  15. <property name="driver" value="${driver}" />
  16. <property name="url" value="${url}" />
  17. <property name="username" value="${username}" />
  18. <property name="password" value="${password}" />
  19. </dataSource>
  20. </environment>
  21. </environments>
  22. <mappers>
  23. <mapper resource="mybatis/domain/UserMapper.xml" />
  24. </mappers>
  25. </configuration>

UserMapperTest.java

  1. import java.io.IOException;
  2. import java.io.Reader;
  3. import java.util.List;
  4. import org.apache.ibatis.io.Resources;
  5. import org.apache.ibatis.session.SqlSession;
  6. import org.apache.ibatis.session.SqlSessionFactory;
  7. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  8. import org.junit.Test;
  9. import org.slf4j.Logger;
  10. import org.slf4j.LoggerFactory;
  11. public class UserMapperTest {
  12. public static Logger logger = LoggerFactory.getLogger(UserMapperTest.class);
  13. SqlSessionFactory factory = null;
  14. @org.junit.Before
  15. public void Before() throws IOException{
  16. final String resource = "Configuration.xml"; //配置文件的位置
  17. Reader reader = Resources.getResourceAsReader(resource); //读取配置文件,SqlSessionFactoryBuilder会根据这个文件来配置 SqlSessionFactory
  18. SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
  19. factory = builder.build(reader);
  20. }
  21.  

  1. @Test
  2. public void testCreate() throws IOException{
  3. SqlSession session = factory.openSession();
  4. User user = new User();
  5. user.setName("xiaoyue");
  6. user.setPassword("password");
  7. user.setGroupName("BOSS");
  8. logger.debug("insert User : name = " + user.getName());
  9. UserMapper userMapper = session.getMapper(UserMapper.class);
  10. try {
  11. userMapper.saveUser(user);
  12. session.commit();
  13. logger.debug("insert User is successed !");
  14. }catch(Exception e){
  15. session.rollback();
  16. logger.error("insert failed, rollback transaction !" , e);
  17. }finally{
  18. session.close();
  19. logger.debug("sqlsession was closed!");
  20. }
  21. }
  22. @Test
  23. public void testSelectUser(){
  24. SqlSession session = factory.openSession();
  25. UserMapper mapper = session.getMapper(UserMapper.class);
  26. try{
  27. User user = mapper.getUserById(1);
  28. System.out.println(user);
  29. }catch(Exception e){
  30. e.printStackTrace();
  31. }finally{
  32. session.close();
  33. }
  34. }
  35. @Test
  36. public void testSelectUserAll(){
  37. logger.error("testSelectUserAll is Running!");
  38. SqlSession session = factory.openSession();
  39. UserMapper mapper = session.getMapper(UserMapper.class);
  40. try{
  41. List<User> list = mapper.getAllUser();
  42. System.out.println(list.size());
  43. for(User user : list) {
  44. System.out.println(user);
  45. }
  46. logger.error("selectUserAll........");
  47. }catch(Exception e){
  48. logger.error("selected is failed!");
  49. e.printStackTrace();
  50. }finally{
  51. session.close();
  52. logger.error("sqlsession is closed!");
  53. }
  54. }
  55. @Test
  56. public void testDelete(){
  57. SqlSession session = factory.openSession();
  58. UserMapper mapper = session.getMapper(UserMapper.class);
  59. mapper.deleteUser(7);
  60. session.commit();
  61. session.close();
  62. }
  63. @Test
  64. public void testUpdate(){
  65. SqlSession session = factory.openSession();
  66. UserMapper mapper = session.getMapper(UserMapper.class);
  67. User user = new User();
  68. user.setId(2);
  69. user.setName("xiao");
  70. user.setGroupName("132131");
  71. user.setPassword("31231");
  72. mapper.updateUser(user);
  73. session.commit();
  74. session.close();
  75. }
  76. }


log4j.properties

### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### set log levels - for more verbose logging change 'info' to 'debug' ###

log4j.rootLogger=warn, stdout

log4j.logger.com.ibatis=DEBUG 
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG 
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG 
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG 
log4j.logger.org.mybatis=DEBUG
log4j.logger.java.sql.Connection=DEBUG 
log4j.logger.java.sql.Statement=DEBUG 
log4j.logger.java.sql.PreparedStatement=DEBUG 
log4j.logger.java.sql.ResultSet=DEBUG

config.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis
username=root
password=root





本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号