I haven't learned new things for a while. After October 1st, I feel that the earlier I do things, the better. I won't say much nonsense. Let's talk about using mybatis to connect to MySQL database. In the previous article, I wrote jdbc tests, and my database tables are still the same. Since most of the information I searched online is eclipse, since I am accustomed to ides, I came here with a lot of problems.
Take a look at the engineering structure
Let me talk about Java code first. dao is the query interface, model is the xml of ben and the corresponding query statement. I feel that this is a bit bad. User.xml is better in dao. You will know after you understand it. Since I am a beginner, I don’t understand many things very much. A reasonable definition of package will be given later.
I used the test for it
Let’s talk about resources, configuration is a configuration file, log4j is a log printing, and others cannot be used for the time being.
Let's take a look at the code, I'll give it to you in the order of creating files.
First, there needs to be an object, which is built according to the database
user.java
package com.fanyafeng.model;import java.util.Date;/*** Author: fanyafeng* Data: 16/10/11 14:56* Email: [email protected]*/public class User {private int id;private String username;private Date birthday;private String sex;private String address;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 Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}@Overridepublic String toString() {return "User{" +"id=" + id +", username='" + username + '/'' +", birthday=" + birthday +", sex='" + sex + '/'' +", address='" + address + '/'' +'}';}}
iuserdao.java
package com.fanyafeng.dao;import com.fanyafeng.model.User;import java.util.List;/*** Author: fanyafeng* Data: 16/10/11 14:55* Email: [email protected]*/public interface IUserDao {public List<User> queryUserByName(String name);public User selectUserById(int id);public void add();public void del(int id);public void alter(int id);}
user.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"><!--resultType Specifies the type of return for a single record --><mapper namespace="com.fanyafeng.dao.IUserDao"><select id="selectUserById" parameterType="int" resultType="com.fanyafeng.model.User">select * from user where id = #{id}</select><!--'%${value}' means that the styling of SQL strings can only be used, which may cause SQL injection--><select id="queryUserByName" parameterType="String" resultType="com.fanyafeng.model.User">SELECT * FROM user WHERE username LIKE #{name}</select><!--INSERT INTO USER (id,username,sex,address) VALUE (null,"Chen Xiaoran","female","college classmate")--><insert id="add" parameterType="com.fanyafeng.model.User">insert into user (id,username,birthday,sex,address) values (#{id},#{username},#{birthday},#{sex},#{address})</insert></mapper>usertest.java
package com.fanyafeng.test;import com.fanyafeng.model.User;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;import java.io.Reader;import java.util.Date;import java.util.List;/*** Author: fanyafeng* Data: 16/10/11 14:58* Email: [email protected]*/public class UserTest {private static SqlSessionFactory sqlSessionFactory;private static Reader reader;static {try {reader = Resources.getResourceAsReader("Configuration.xml");sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);} catch (IOException e) {e.printStackTrace();}}public static void main(String[] args) {SqlSession sqlSession = sqlSessionFactory.openSession();try {// User user = (User) sqlSession.selectOne("com.fanyafeng.dao.IUserDao.selectUserById", 2);// System.out.println(user.getAddress() + user.getSex() + user.getBirthday());// System.out.println(user.getId() + user.getUsername());////List<User> userList = sqlSession.selectList("com.fanyafeng.dao.IUserDao.queryUserByName", "%Li Ning%"); for (int i = 0; i < userList.size(); i++) {System.out.println(userList.get(i).toString());}User user = new User();user.setId(100);user.setBirthday(new Date());user.setUsername("Li Ning");user.setSex("female");user.setAddress("Home squat");int isAdd = sqlSession.insert("com.fanyafeng.dao.IUserDao.add", user);sqlSession.commit();//Don't forget} finally {sqlSession.close();}}}
configuration.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><!-- If configured in the mapper, the configuration can be omitted here--><!--<typeAlias alias="User" type="com.fanyafeng.model.User"/>--><!--</typeAliases>--><!--</typeAliases>--><!-- Environments configuration after integration with spring will be abolished --><environments default="development"><environment id="development"><!-- Use jdbc transaction management --><transactionManager type="JDBC"/><!-- Database connection pool --><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8"/><property name="username" value="root"/><property name="password" value=""//</dataSource></environment></environments><mappers><mapper resource="com/fanyafeng/model/User.xml"//</mappers></configuration>
For log4j, please add it according to your hobbies. The comments in the code are written in detail, so I won't go into details. There is a place here that makes me feel very frustrated. I asked a great master to know what happened. There is a target directory in the screenshot. This is the storage location for the compiled files. However, the question is, where will the Java file be compiled and placed. However, the non-resource xml file was not put in, and an exception was thrown out. I checked a lot of information and answered the question. Then I solved it like this and looked at the pom.xml file. After I changed it, I added the build tag.
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.fanyafeng</groupId><artifactId>mybatisdemo</artifactId><packaging>war</packaging><version>1.0-SNAPSHOT</version><name>mybatisdemo Maven Webapp</name><url>http://maven.apache.org</url><build><finalName>mybatisdemo</finalName><resources><resource><directory>src/main/resources</directory><includes><include>**/*.xml</include><include>**/*.properties</include></includes></resource><resource>< directory>src/main/java</directory><includes><include>**/*.xml</include></includes></resource></resources></build><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency><!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.38</version></dependency><!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.2.8</version></dependency><!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.21</version></dependency><!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.21</version></dependency><!-- https://mvnrepository.com/artifact/log4j/log4j --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core --><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.5</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api --><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-api</artifactId><version>2.5</version></dependency><!-- https://mvnrepository.com/artifact/org.javassist/javassist --><dependency><groupId>org.javassist</groupId><artifactId>javassist</artifactId><version>3.18.1-GA</version></dependency><!-- https://mvnrepository.com/artifact/commons-logging/commons-logging --><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.1.1</version></dependency><!-- https://mvnrepository.com/artifact/cglib/cglib --><dependency><groupId>cglib</groupId><artifactId>cglib</artifactId><version>2.2.2</version></dependency><!-- https://mvnrepository.com/artifact/asm/asm --><dependency><groupId>asm</groupId><artifactId>asm</artifactId><version>3.3.1</version></dependency></dependencies></project>
This is enough, I have implemented the search and addition here, and other things are being studied.
The above is the Intellij Mybatis connection to Mysql database introduced by the editor. I hope it will be helpful to everyone. If you have any questions, please leave me a message and the editor will reply to everyone in time. Thank you very much for your support to Wulin.com website!